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

如何根据Excel映射文件批量替换DataFrame列名为对应翻译值

问题排查

你的原有代码没有生效,核心有两个问题:

  • pandas的rename()方法默认返回修改后的新DataFrame对象,不会直接修改原df,你既没有加inplace=True参数也没有将返回值赋值给变量,所以改动不会保留
  • 手动循环遍历列名的写法冗余,且数据量较大时执行效率低
最优实现方案(无循环,符合pandas最佳实践)

直接将映射表的翻译关系转成字典,传入rename方法即可,pandas会自动完成匹配替换,匹配不到的列名会自动保留原样,完全不需要手动写判断逻辑:

# 第一步:从映射表df1生成{原列名: 西班牙译名}的映射字典
col_trans_map = df1['Spanish'].to_dict()
# 第二步:直接用映射字典替换列名
df = df.rename(columns=col_trans_map)

原理解释

df.rename(columns=映射字典)的执行逻辑:

  1. 自动遍历df的所有列名
  2. 如果列名是映射字典中存在的key,就替换为对应的value
  3. 如果列名不在映射字典的key中,直接保留原列名
    完全匹配你的需求,代码只有2行,运行效率远高于手动循环。
原有循环写法的修正版(仅作对比,不推荐使用)

如果你要坚持用循环实现,需要修改为以下写法:

new_col_list = []
for col in df.columns:
    if col in df1.index:
        new_col_list.append(df1.loc[col, 'Spanish'])
    else:
        new_col_list.append(col)
# 直接给columns属性赋值完成替换
df.columns = new_col_list

不推荐在循环中反复调用rename+inplace=True,会反复修改DataFrame对象,性能更差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:21:01