我有一个约300K行和约40列的数据帧。
我想知道是否有任何行包含空值,并将这些“空”行放在一个单独的数据框中,这样我就可以轻松地研究它们
我可以显式创建掩码:
mask=False
对于df.列中的列:
掩码=掩码| df[col].isnull()
dfnulls=df[mask]
或者我可以这样做:
df.ix[df.index[(df.T==np.nan.sum()>;1]]
是否有一种更优雅的方法(定位带有空值的行)
[更新以适应现代pandas,它将isnull作为DataFrames.的一种方法]
您可以使用isnull和any构建布尔序列,并使用该序列索引到帧中:
>&燃气轮机&燃气轮机;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南