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

如何在Python中用字典替换DataFrame列名中的指定数字片段?

问题原因分析
  • df.replace() 默认作用于DataFrame的单元格数值,不会修改列名属性,所以你调用该方法后看不到列名变化。
  • 就算直接对列名使用纯数字键做正则匹配,也可能出现误匹配其他位置数字的问题,建议加边界锚点提升准确性。
可行实现方案

方案1:自定义函数遍历替换(可读性最高,可灵活调整匹配规则)

import re

def replace_col(col_name):
    # 匹配列名中被下划线包裹的3位数字段
    num_match = re.search(r'_(\d{3})_', col_name)
    if num_match:
        target_num = num_match.group(1)
        # 匹配到映射规则就替换,否则保留原列名
        if target_num in dict_2:
            return col_name.replace(target_num, dict_2[target_num])
    return col_name

# 应用到所有列名
df.columns = [replace_col(col) for col in df.columns]

运行后你的列名将变为:ab_sells_cde_AI_frm、ab_sells_cde_105_frm、ab_sells_cde_120_frm,符合需求。

方案2:使用pandas字符串方法批量替换

# 给映射规则加上下划线边界,避免误替换
pattern_dict = {rf'_{k}_': f'_{v}_' for k, v in dict_2.items()}
# 将列名转为Series后调用replace,再转回列表赋值给列名
df.columns = df.columns.to_series().replace(pattern_dict, regex=True).tolist()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:45:08