首页 > 解决方案 > 如何在具有多个条件的熊猫中删除列

问题描述

我是 python 和 pandas 的新手

在下面的数据框中,我需要删除完全为“无”的列,带有“空白和无”,但不是带有值和无的列

数据框

在上表中,我希望删除 A 列和 C 列,因为它们完全是“无”或“空白且无”,但 B 列至少在 3 个单元格中有一些有效数据,不应受到干扰

如何在 df.drop (pandas) 中给出这个条件

标签: pythonpandasdataframe

解决方案


您可以通过以下方式测试缺失值NaNNone类似,然后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')

推荐阅读