2016-02-23 57 views
2

我有一个大的数据框,当所有列为nan或没有有限值时,我想分割它们。我正在寻找类似于职位Drop rows of pandas dataframe that don't have finite values in certain variable(s)的东西,而不是放弃,我想拆分这些行。查找没有有限值的pandas数据框的行索引

我目前对大熊猫0.16.0

+0

做'df [df.apply(lambda x:x.isnull()。all(),axis = 1)]'工作? – EdChum

+0

也没有'df.dropna(how ='all')'这个吗? – EdChum

+0

@EdChum绝对完美。谢谢。 dropna返回没有nans的数据帧,而不是nans的行。 – dlwlrma

回答

1
dropna返回

它会更快通过调用索引标识index.difference过滤从您的DF非NaN行:

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,后一种方法是更快

1

由于@EdChum指出

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

的伎俩。

相关问题