2016-02-23 87 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)] 

的伎倆。

相關問題