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

Pandas如何提取列名中@符号后的字符串并重命名列

解决Pandas列名重命名:提取@符号后的内容

问题原因分析

你原来的代码之所以把列名替换成正则文本,核心有两个问题:

  • 错误使用str.replace:col.replace(col, '正则表达式')相当于把整个列名字符串直接替换成第二个参数的文本,完全没触发正则匹配逻辑。
  • Python的re模块不支持\K断言,你单独测试的正则在Python环境里本身无法生效。

两种可行解决方案

方案1:正则替换(re.sub)

通过正则匹配@及之前的所有内容,替换为空字符串,保留@之后的有效部分:

import pandas as pd
import re

df = pd.read_csv('path')
df.rename(columns=lambda col: re.sub(r'^.*@\s*', '', col), inplace=True)

正则说明:^.*@\s*会匹配从列名开头到@的所有字符,以及@后面的任意空白字符,替换后就剩下@之后的目标内容。

方案2:字符串分割(更简洁)

如果列名里只有一个@,用split分割后取最后一部分,再去除前后空白更高效:

import pandas as pd

df = pd.read_csv('path')
df.rename(columns=lambda col: col.split('@')[-1].strip(), inplace=True)
  • col.split('@')把列名按@拆分为列表,[-1]直接取列表最后一个元素(即@之后的内容)
  • .strip()自动去除内容前后的空白字符,比如示例里@后面的空格

内容的提问来源于stack exchange,提问作者Dot Net Dev 19

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:57:08