You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pandas中按多条件删除列:仅删除全为None或空白+None的列

实现方案

你可以先把列中所有空白类字符串统一转为pandas可识别的缺失值,再判断整列是否全为缺失值,将符合删除条件的列传给df.drop即可,具体代码如下:

import pandas as pd
import numpy as np

# 1. 把全空白字符串(含空字符串、仅含空格/制表符的内容)统一替换为NaN,和None统一为缺失值格式
df = df.replace(r'^\s*$', np.nan, regex=True)
# 2. 删除全为缺失值的列
df.drop(columns=df.columns[df.isna().all()], inplace=True)

代码说明

  • 正则r'^\s*$'可以匹配所有仅包含空白字符的内容,替换后原本的None、空值、空白值都会被识别为pandas的缺失值
  • df.isna().all()会逐列判断是否整列全为缺失值,返回布尔值序列
  • df.columns[df.isna().all()]会筛选出所有符合删除条件的列名,传入drop的columns参数即可完成删除

如果需要保留原df不修改,去掉inplace=True参数,把执行结果赋值给新变量即可:

new_df = df.replace(r'^\s*$', np.nan, regex=True).drop(columns=df.columns[df.replace(r'^\s*$', np.nan, regex=True).isna().all()])

效果验证

用你提到的示例场景构造测试数据,运行后会自动删除全空的A列、仅含空白和None的C列,保留存在有效数据的B列,完全符合需求。

内容的提问来源于stack exchange,提问作者massu1000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:45:04