当所有列都为nan或者没有有限值时,我想要分割一个大型数据帧。我正在寻找类似于帖子Drop rows of pandas dataframe that don't have finite values in certain variable(s)的内容,但不是放弃我想分开这些行。
我目前正在使用pandas 0.16.0
答案 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,后一种方法要快得多