我有像这样的熊猫数据框
df = pd.DataFrame(data=[[21, 1],[32, -4],[-4, 14],[3, 17],[-7,NaN]], columns=['a', 'b'])
df
Run Code Online (Sandbox Code Playgroud)
我希望能够删除列列表中具有负值的所有行,并保留具有NaN的行.
在我的例子中只有2列,但我的数据集中有更多,所以我不能一个接一个地做.
Com*_*low 19
如果你想将它应用到所有列,这样做df[df > 0]有dropna():
>>> df[df > 0].dropna()
a b
0 21 1
3 3 17
Run Code Online (Sandbox Code Playgroud)
如果你知道要应用它的列,那么只对那些cols做df[df[cols] > 0]:
>>> cols = ['b']
>>> df[cols] = df[df[cols] > 0][cols]
>>> df.dropna()
a b
0 21 1
2 -4 14
3 3 17
Run Code Online (Sandbox Code Playgroud)
我发现你可以通过这样做来简化答案:
>>> cols = ['b']
>>> df = df[df[cols] > 0]
Run Code Online (Sandbox Code Playgroud)
dropna() 不是就地方法,因此您必须存储结果。
>>> df = df.dropna()
Run Code Online (Sandbox Code Playgroud)