我有一个表格,其中包含一些NaN值:
A B C D
2 3 2 Nan
3 4 5 5
2 3 1 Nan
我想获得D = NaN的所有行。我怎么能这样做?
答案 0 :(得分:24)
创建用于说明的df(包含Nan)
In [86]: df =pd.DataFrame({'a':[1,2,3],'b':[3,4,5],'c':[np.nan, 4,5]})
In [87]: df
Out[87]:
a b c
0 1 3 NaN
1 2 4 4
2 3 5 5
检查列c
的哪些索引为空In [88]: pd.isnull(df['c'])
Out[88]:
0 True
1 False
2 False
Name: c, dtype: bool
检查列c
的哪些索引不为空In [90]: pd.notnull(df['c'])
Out[90]:
0 False
1 True
2 True
Name: c, dtype: bool
选择df的行,其中c不为空
In [91]: df[pd.notnull(df['c'])]
Out[91]:
a b c
1 2 4 4
2 3 5 5
选择df的行,其中c为null
In [93]: df[pd.isnull(df['c'])]
Out[93]:
a b c
0 1 3 NaN
选择df列c的行,其中c不为空
In [94]: df['c'][pd.notnull(df['c'])]
Out[94]:
1 4
2 5
Name: c, dtype: float64
答案 1 :(得分:0)
对于不涉及大熊猫的解决方案,您可以执行以下操作:
goodind=np.where(np.sum(np.isnan(y),axis=1)==0)[0] #indices of rows non containing nans
(如果你想要带有nan的行,则为否定)并使用索引来切片数据。
我不确定sum
是结合布尔值的最佳方式,但np.any
和np.all
似乎没有axis
参数,所以这是最好的我发现的方式。