我有一个大的数据框,当所有列为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