我有一個大的數據框,當所有列爲nan或沒有有限值時,我想分割它們。我正在尋找類似於職位Drop rows of pandas dataframe that don't have finite values in certain variable(s)的東西,而不是放棄,我想拆分這些行。查找沒有有限值的pandas數據框的行索引
我目前對大熊貓0.16.0
我有一個大的數據框,當所有列爲nan或沒有有限值時,我想分割它們。我正在尋找類似於職位Drop rows of pandas dataframe that don't have finite values in certain variable(s)的東西,而不是放棄,我想拆分這些行。查找沒有有限值的pandas數據框的行索引
我目前對大熊貓0.16.0
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,後一種方法是更快
由於@EdChum指出
df[df.apply(lambda x: x.isnull().all(), axis=1)]
的伎倆。
做'df [df.apply(lambda x:x.isnull()。all(),axis = 1)]'工作? – EdChum
也沒有'df.dropna(how ='all')'這個嗎? – EdChum
@EdChum絕對完美。謝謝。 dropna返回沒有nans的數據幀,而不是nans的行。 – dlwlrma