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

如何在Pandas中根据部分列名列表批量删除DataFrame列?

解决Pandas删除包含指定字符串列的问题

错误原因

你之前的代码报错是因为df.filter()的items、like、regex参数互斥,不能同时传入待匹配的字符串列表和regex=True。

正确实现方法

直接通过正则匹配列名,定位需要删除的列后执行删除操作:

  1. 将dropthese['partname']中的所有字符串拼接成正则表达式(用|分隔,表示匹配任意一个目标字符串)
  2. 筛选出df中列名包含任一目标字符串的列
  3. 删除这些列

基础版代码

# 拼接正则匹配规则
match_pattern = '|'.join(dropthese['partname'].tolist())
# 找出要删除的列
columns_to_drop = df.columns[df.columns.str.contains(match_pattern)]
# 删除列(需赋值回df,或添加inplace=True直接修改原数据)
df = df.drop(columns_to_drop, axis=1)

处理特殊字符的进阶版

如果partname里包含正则特殊字符(比如.、*、?等),需要先转义避免匹配逻辑出错:

import re
# 转义每个字符串后再拼接正则规则
match_pattern = '|'.join(re.escape(part) for part in dropthese['partname'].tolist())
columns_to_drop = df.columns[df.columns.str.contains(match_pattern)]
df = df.drop(columns_to_drop, axis=1)

补充说明

  • 若想直接修改原DataFrame,无需重新赋值,可给drop方法添加inplace=True参数:df.drop(columns_to_drop, axis=1, inplace=True)
  • 如需忽略大小写匹配,给str.contains()添加case=False参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:41:34