python - 如何在具有多个条件的熊猫中删除列
问题描述
我是 python 和 pandas 的新手
在下面的数据框中,我需要删除完全为“无”的列,带有“空白和无”,但不是带有值和无的列
在上表中,我希望删除 A 列和 C 列,因为它们完全是“无”或“空白且无”,但 B 列至少在 3 个单元格中有一些有效数据,不应受到干扰
如何在 df.drop (pandas) 中给出这个条件
解决方案
您可以通过以下方式测试缺失值NaN
和 None
类似,然后Nonetype
通过以下方式测试DataFrame.isna
可能的字符串DataFrame.isin
,|
按位链接OR
并通过DataFrame.loc
反转掩码传递给以测试是否所有值都是每列的真值(默认axis=0
)通过DataFrame.all
:
m = df.isna() | df.isin(['', 'None', 'none'])
df = df.loc[:, ~m.all()]
或像评论一样,仅在输出中被替换值:
df = df.replace(['', 'None', 'none'],np.nan).dropna(axis=1, how='all')
推荐阅读
- firebase - Flutter firebase 应用程序与对话流连接时显示错误
- python - 我正在尝试在 cassandra 查询中传递参数,但使用 python 时出现错误
- python - Pandas 使用索引名称和列名称应用函数
- c# - 公共函数返回一个列表c#
- html - 造型类星体元素按钮工具
- gitlab - run a gitlab-ci stage only if changes or previous fail
- postgresql - 不同的索引用于具有不同 companyid 的相同查询
- android - Firebase firestore database returns null, the Query Snapshot value is empty but I have data stored on firestore, why is this returning null?
- web3js - how can I use encodeFunctionCall()?
- javascript - Sort JSON string by attribute in JavaScript