我有像这样的熊猫数据框
df = pd.DataFrame(data=[[21, 1],[32, -4],[-4, 14],[3, 17],[-7,NaN]], columns=['a', 'b']) df
我希望能够删除列列表中具有负值的所有行,并保留具有NaN的行.
在我的例子中只有2列,但我的数据集中有更多,所以我不能一个接一个地做.
如果你想将它应用到所有列,这样做df[df > 0]
有dropna()
:
>>> df[df > 0].dropna() a b 0 21 1 3 3 17
如果你知道要应用它的列,那么只对那些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