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

如何通过正则匹配删除pandas DataFrame中含.1的列且保留含11的列

问题原因

你原来使用的正则[.|1]{2}存在逻辑错误:

  • 方括号[]定义的是字符匹配集,内部规则为匹配任意单个属于集合内的字符,你写的[.|1]实际会匹配.、|、1三类字符
  • 后缀{2}要求匹配连续2个符合集合规则的字符,因此11、.1、1.等连续2个字符属于上述集合的情况都会被命中,最终导致误删列名带11的列
修复方案

你只需要把正则调整为匹配字面量.1即可,注意正则中.是特殊通配符,需要加反斜杠转义,推荐用原始字符串r''包裹避免转义冲突。
有两种写法可选:

写法1(推荐,逻辑更直观)

直接通过列名判断反选不需要删除的列:

DX_totals = DX_totals.loc[:, ~DX_totals.columns.str.contains(r'\.1')]

写法2(沿用你原有的filter+drop逻辑)

仅调整正则部分即可:

DX_totals = DX_totals[DX_totals.columns.drop(list(DX_totals.filter(regex=r'\.1')))]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:27:00