优化代码:根据DataFrame名称移除列名末尾数字
优化DataFrame列名清理代码
你原来的代码用了大量重复的if判断,既冗余又难维护。可以通过映射字典统一管理不同DataFrame对应的清理规则,同时合并重复逻辑,让代码更简洁易扩展:
def clean_df_columns(df_dict): # 定义DF名称到要移除的末尾数字的映射 df_num_map = { "df3": "0", "df5": "1", "df4": "2", "df6": "3" } for df_name, df in df_dict.items(): if df_name in df_num_map: target_num = df_num_map[df_name] # 先移除指定末尾数字,再移除末尾下划线 df.columns = df.columns.str.replace(rf'{target_num}$', '', regex=True) df.columns = df.columns.str.replace(r'_$', '', regex=True) return df_dict
优化细节说明:
- 用
df_num_map字典替代一堆if判断,后续新增/修改规则只需调整字典,不用改动核心逻辑 - 函数名改为语义化的
clean_df_columns,比原remove更清晰 - 重复的下划线清理逻辑保留,但通过映射避免了重复的数字替换代码
如果想进一步减少正则调用次数,还可以把两次替换合并成一次:
def clean_df_columns(df_dict): df_num_map = { "df3": "0", "df5": "1", "df4": "2", "df6": "3" } for df_name, df in df_dict.items(): if df_name in df_num_map: target_num = df_num_map[df_name] # 一次匹配末尾的「指定数字+可选下划线」或「单独下划线」 df.columns = df.columns.str.replace(rf'{target_num}_?$|_$', '', regex=True) return df_dict
内容的提问来源于stack exchange,提问作者ella
相关产品推荐
相关产品推荐

