繁体   English   中英

如何根据特定列集的值删除 pandas.DataFrame 中的行?

[英]How to drop rows in pandas.DataFrame based on values in particular set of columns?

从下面的数据框中,如何删除列[B, C, D]都具有 null 值的所有行?

输入数据框:

    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

所需的 output:

    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)

您可以计算列子集的(非 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

并且只关注所需的列

就个人而言,我会使用pandas.DataFrame.dropna()方法及其参数howsubset 代码如下。

>>> 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM