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

为何使用try-except重命名Pandas列时无法正常生效?

Pandas重命名列时try-except不生效的问题解决

问题原因

Pandas的rename()方法有个特性:当你传入的列名不存在时,它不会抛出任何异常,只会静默跳过该重命名操作。这就是为什么你的代码从未进入except分支,列名也没被修改的核心原因。

正确处理方式

方法1:直接检查列是否存在(推荐)

不需要依赖try-except,直接判断目标列是否在DataFrame中,再执行对应重命名逻辑:

# 优先尝试重命名Deep_Res_ohmm
if 'Deep_Res_ohmm' in df_data.columns:
    df_data = df_data.rename(columns={'Deep_Res_ohmm': 'new_name'})
# 不存在则尝试重命名Shallow_Res_ohmm
elif 'Shallow_Res_ohmm' in df_data.columns:
    df_data = df_data.rename(columns={'Shallow_Res_ohmm': 'new_name'})
# 都不存在则给出提示
else:
    print("需要重命名的目标列不存在")

方法2:自定义安全重命名函数(适配try-except)

如果一定要用try-except逻辑,可以自己封装一个重命名函数,确保列不存在时主动抛出异常:

def safe_rename(df, column_mapping):
    # 找出所有不存在的目标列
    missing_columns = [col for col in column_mapping.keys() if col not in df.columns]
    if missing_columns:
        raise KeyError(f"列 {missing_columns} 不存在于DataFrame中")
    return df.rename(columns=column_mapping)

try:
    df_data = safe_rename(df_data, {'Deep_Res_ohmm': 'new_name'})
except KeyError:
    print('testing different column name')
    df_data = safe_rename(df_data, {'Shallow_Res_ohmm': 'new_name'})

效果验证

用你的测试数据执行上述代码后,输出结果会变为:

df_after
      WellMD  new_name
0     1031.7      8.14
1     1031.8     10.04
2     1031.9     10.11

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:22:47