如何从数据帧中选择具有一个或多个空值的行,而不显式列出列?

我有一个约300K行和约40列的数据帧。
我想知道是否有任何行包含空值,并将这些“空”行放在一个单独的数据框中,这样我就可以轻松地研究它们

我可以显式创建掩码:

mask=False
对于df.列中的列:
掩码=掩码| df[col].isnull()
dfnulls=df[mask]

或者我可以这样做:

df.ix[df.index[(df.T==np.nan.sum()>1]]

是否有一种更优雅的方法(定位带有空值的行)

[更新以适应现代pandas,它将isnull作为DataFrames.的一种方法]

您可以使用isnullany构建布尔序列,并使用该序列索引到帧中:

&gt&燃气轮机&燃气轮机;df=pd.DataFrame([range(3),[0,np.NaN,0],[0,0,np.NaN],range(3),range(3)])
&燃气轮机&燃气轮机&燃气轮机;df.isnull()
0      1      2
0假假假假假
1假真假
2假假假真
3假假假假
4假假假假
&燃气轮机&燃气轮机&燃气轮机;df.isnull().any(轴=1)
0错误
1正确
2正确
3错误
4错误
数据类型:bool
&燃气轮机&燃气轮机&燃气轮机;df[df.isnull().any(轴=1)]
0   1   2
10南0
200南

[对于较老的熊猫:]

您可以使用函数isnull代替以下方法:

[56]on

:df=pd.DataFrame([range(3),[0,np.NaN,0],[0,0,np.NaN],range(3),range(3)])
In[57]:df
Output[57]:
0   1   2
0  0   1   2
10南0
200南
3  0   1   2
4  0   1   2
In[58]:pd.isnull(df)
Output[58]:
0      1      2
0假假假假假
1假真假
2假假假真
3假假假假
4假假假假
At[59]on:pd.isnull(df).any(轴=1)
Output[59]:
0错误
1正确
2正确
3错误
4错误

导致相当紧凑:

[60]on

:df[pd.isnull(df.any(axis=1)]
Output[60]:
0   1   2
10南0
200南

发表评论