查找不具有有限值的pandas数据帧的行索引

时间:2016-02-23 15:37:14

标签: python pandas notnull

当所有列都为nan或者没有有限值时,我想要分割一个大型数据帧。我正在寻找类似于帖子Drop rows of pandas dataframe that don't have finite values in certain variable(s)的内容,但不是放弃我想分开这些行。

我目前正在使用pandas 0.16.0

2 个答案:

答案 0 :(得分:1)

正如@EdChum指出的那样

df[df.apply(lambda x: x.isnull().all(), axis=1)]

诀窍。

答案 1 :(得分:1)

通过在NaN返回的索引标签上调用index.difference来过滤df中的非dropna行会更快:

In [69]:
df = pd.DataFrame({'a':[0,np.NaN, 0], 'b':[np.NaN, np.NaN, 1]})
df = pd.concat([df]*10000, ignore_index=True)   

%timeit df[df.apply(lambda x: x.isnull().all(), axis=1)]
%timeit df.loc[df.index.difference(df.dropna(how='all').index)]

1 loops, best of 3: 2.82 s per loop
100 loops, best of 3: 8.95 ms per loop

你可以看到,对于30k行df,后一种方法要快得多