如何仅删除Pandas DataFrame中的特定行?

时间:2016-02-03 14:48:49

标签: python pandas

我有一个pandas DataFrame,其中包含行的NaN

import pandas as pd
import numpy as np
df = pd.DataFrame(data)
df 

        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
b       NaN  1.224234  7.823421  bar  False
c -1.135632  1.212112 -0.173215  bar  False
d       NaN       NaN       NaN  NaN   True
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False

我可以使用NaN

删除所有df.dropna()个值

但是,我只删除某些行。例如,如果NaN列为one,则应删除该行。

我的解决方案是创建一个新的DataFrame

df[df.one != 'Nan']

怎么办呢?

1 个答案:

答案 0 :(得分:2)

使用loc并传递从notnull生成的布尔掩码:

In [107]:
df.loc[df['one'].notnull()]

Out[107]:
        one       two     three four   five
a  0.469112 -0.282863 -1.509059  bar   True
c -1.135632  1.212112 -0.173215  bar  False
e  0.119209 -1.044236 -0.861849  bar   True
f -2.104569 -0.494929  1.071804  bar  False

掩码输出:

In [109]:
df['one'].notnull()

Out[109]:
a     True
b    False
c     True
d    False
e     True
f     True
Name: one, dtype: bool

您无法使用NaN==来比较!=值,因为设计NaN == NaNFalse