循环中如何修改名称动态变化的变量?Python批量Excel列重命名问题
批量处理数据库导出Excel文件实现方案
你原有代码存在未定义变量duf、未处理动态列重命名为FY-0、重命名写法冗余的问题,修正后的可运行代码如下:
import os import pandas as pd in_path = 'ESG_untransformed' out_path = 'ESG_transformed' # 输出路径不存在则自动创建 if not os.path.exists(out_path): os.mkdir(out_path) # 动态列固定位置索引(pandas列索引从0开始计数,可根据你的实际列位置调整取值) DYNAMIC_COL_INDEX = 28 for filename in os.listdir(in_path): if filename.endswith('.xlsx'): # 读取原始文件 file_full_path = os.path.join(in_path, filename) df = pd.read_excel(file_full_path) # 删除前2行并重置行索引 df = df.iloc[2:].reset_index(drop=True) # 批量生成FY-1到FY-20的重命名规则 rename_dict = {f'Unnamed: {i}': f'FY-{i-28}' for i in range(29, 49)} # 把固定位置的动态列重命名为FY-0 rename_dict[df.columns[DYNAMIC_COL_INDEX]] = 'FY-0' # 执行列重命名 df = df.rename(columns=rename_dict) # 导出处理后的文件 df.to_excel(os.path.join(out_path, filename), index=False)
注意事项
- 你可以根据动态列的实际位置调整
DYNAMIC_COL_INDEX的取值,比如第一列对应索引为0,第二列对应索引为1,以此类推 - 代码用字典推导式批量生成重命名规则,无需逐行写20次重命名逻辑
- 修正了原代码中变量名写错、写入文件用了未重命名数据的问题
内容的提问来源于stack exchange,提问作者Julian Bausch
相关产品推荐
相关产品推荐

