【发布时间】:2021-11-11 20:06:22
【问题描述】:
我是 python 和 pandas 的新手
在下面的数据框中,我需要删除完全为“无”的列,带有“空白和无”,但不是带有值和无的列
在上表中,我希望删除 A 列和 C 列,因为它们完全是“无”或“空白且无”,但 B 列至少在 3 个单元格中有一些有效数据,不应受到干扰
如何在 df.drop (pandas) 中给出这个条件
【问题讨论】:
我是 python 和 pandas 的新手
在下面的数据框中,我需要删除完全为“无”的列,带有“空白和无”,但不是带有值和无的列
在上表中,我希望删除 A 列和 C 列,因为它们完全是“无”或“空白且无”,但 B 列至少在 3 个单元格中有一些有效数据,不应受到干扰
如何在 df.drop (pandas) 中给出这个条件
【问题讨论】:
您可以通过DataFrame.isna 测试缺失值NaN 和None,例如Nonetype,然后通过DataFrame.isin 测试可能的字符串,通过| 链接按位OR 并通过反转传递给DataFrame.loc DataFrame.all 测试是否所有值每列都为真(默认 axis=0)的掩码:
m = df.isna() | df.isin(['', 'None', 'none'])
df = df.loc[:, ~m.all()]
或者像注释一样,只在输出中被替换值:
df = df.replace(['', 'None', 'none'],np.nan).dropna(axis=1, how='all')
【讨论】: