Python Pandas查找所有值都是NaN的所有行

时间:2016-08-10 22:27:25

标签: python python-2.7 pandas

所以我有一个包含5列的数据框。我想拉出所有列都是NaN的索引。我使用的是这段代码:

nan = pd.isnull(df.all)

但这只是返回false,因为逻辑上说不是数据帧中的所有值都不为空。有数以千计的条目,所以我宁愿不必循环并检查每个条目。谢谢!

3 个答案:

答案 0 :(得分:10)

应该是:

df.isnull().all(1)

可以访问index,如:

df.index[df.isnull().all(1)]

示范

np.random.seed([3,1415])
df = pd.DataFrame(np.random.choice((1, np.nan), (10, 2)))
df

enter image description here

idx = df.index[df.isnull().all(1)]
nans = df.ix[idx]
nans

enter image description here

时序

<强>码

np.random.seed([3,1415])
df = pd.DataFrame(np.random.choice((1, np.nan), (10000, 5)))

enter image description here

答案 1 :(得分:2)

假设您的数据框名为df,您可以使用布尔索引来检查所有列(axis=1)是否为空。然后取结果的索引。

np.random.seed(0)
df = pd.DataFrame(np.random.randn(5, 3))
df.iloc[-2:, :] = np.nan
>>> df
          0         1         2
0  1.764052  0.400157  0.978738
1  2.240893  1.867558 -0.977278
2  0.950088 -0.151357 -0.103219
3       NaN       NaN       NaN
4       NaN       NaN       NaN

nan = df[df.isnull().all(axis=1)].index

>>> nan
Int64Index([3, 4], dtype='int64')

答案 2 :(得分:0)

来自大师自己:https://stackoverflow.com/a/14033137/6664393

nans = pd.isnull(df).all(1).nonzero()[0]