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

Python如何基于两个字典动态重命名DataFrame海量列?

解决方案

你可以通过自定义列名重命名函数,结合Pandas的rename方法实现需求。核心思路是基于最后一个下划线拆分每个列名的前缀和后缀,再用你定义的两个字典分别替换,最后拼接成新列名。

具体实现代码

import pandas as pd

# 你的映射字典
dict_1 = {"QA1" : "electric", 
          "Q8_r1_c3" : "solar",
          "Q19b_5" : "urban"}

dict_2 = {"_1" : "Restaurants",
          "_2" : "Hotels",
          "_32" : "School"}

# 替换成你的实际DataFrame
df = pd.DataFrame(columns=["QA1_1", "Q8_r1_c3_1", "Q19b_5_1", "QA1_32", "Q8_r1_c3_32", "Q19b_5_32"])

# 定义重命名函数
def rename_col(col):
    # 定位最后一个下划线,拆分前缀和后缀
    last_underscore = col.rfind('_')
    prefix = col[:last_underscore]
    suffix = col[last_underscore:]
    
    # 字典映射,键不存在则保留原内容(可选逻辑)
    new_prefix = dict_1.get(prefix, prefix)
    new_suffix = dict_2.get(suffix, suffix)
    
    # 拼接新列名
    return f"{new_prefix}_{new_suffix}"

# 应用重命名
df.rename(columns=rename_col, inplace=True)

# 查看结果
print(df.columns.tolist())

关键细节说明

  • 用rfind('_')拆分:因为前缀(比如Q8_r1_c3)本身包含下划线,只有定位最后一个下划线才能准确拆分出后缀(比如_1),避免误拆前缀里的下划线。
  • dict.get(key, default):如果某个列名的前缀/后缀不在字典中,会保留原内容,避免报错(可根据需求调整为抛出异常或其他处理逻辑)。
  • 性能:该方法处理4000列完全没问题,Pandas的rename遍历列名时效率优异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:15:36