从下面的数据框中,如何删除列[B, C, D]
都为空的所有行?
输入数据帧:
A B C D
0 20 NaN 2.0 NaN
1 3 1.0 NaN 2.0
2 44 4.0 NaN NaN
3 67 NaN NaN NaN
4 52 3.0 2.0 NaN
5 8 NaN NaN NaN
期望输出:
A B C D
0 20 NaN 2.0 NaN
1 3 1.0 NaN 2.0
2 44 4.0 NaN NaN
4 52 3.0 2.0 NaN
让我们试试dropna
df=df.dropna(thresh=1)
就我个人而言,我会使用参数为how
和subset
的pandas.DataFrame.dropna()
方法。代码如下。
>>> df = df.dropna(how='all', subset=['B', 'C', 'D'])
>>> print(df)
A B C D
0 20 NaN 2.0 NaN
1 3 1.0 NaN 2.0
2 44 4.0 NaN NaN
4 52 3.0 2.0 NaN
您可以计算列的子集中的(非NaN(值:
df[df[['B', 'C', 'D']].count(axis=1) > 0]
如预期:
A B C D
0 20 NaN 2.0 NaN
1 3 1.0 NaN 2.0
2 44 4.0 NaN NaN
4 52 3.0 2.0 NaN
并且只关注所需的列