如何使用pandas导入多个列序不同的Excel并统一格式合并
代码修改方案
你只需要在合并完成后为最终的DataFrame指定需要的列顺序即可,pandas会自动按列名匹配对应数据,不会出现错位问题。修改后的代码如下:
import os import pandas as pd # 提前定义好目标列顺序 TARGET_COLS = ['title1', 'title2', 'title3', 'title4'] cwd = os.path.abspath('') files = os.listdir(cwd) df_list = [] for file in files: # 兼容大小写后缀的Excel文件 if file.endswith(('.XLSX', '.xlsx')): temp_df = pd.read_excel(file) df_list.append(temp_df) # 合并所有表格 df = pd.concat(df_list, ignore_index=True) # 按指定顺序重排列,多余的列会被丢弃,缺失的列会赋值为NaN df = df[TARGET_COLS] print(df) # 如需导出结果可添加下行代码 # df.to_excel('合并结果.xlsx', index=False)
补充说明
- pandas的DataFrame传入列名列表取值时,会严格按照列表顺序返回对应列数据,只要列名一致,不管原始Excel的列排序是什么样都不会出现错位。
- 这里把原代码的
append替换为pd.concat,是因为append在pandas 2.0+版本已被正式弃用,concat的性能和兼容性更好。 - 如果需要保留所有Excel的额外列,仅把目标四列放在最前面,可以把重排列的逻辑替换为如下代码:
# 目标列在前,其余列按原有顺序跟在后面 other_cols = [col for col in df.columns if col not in TARGET_COLS] df = df[TARGET_COLS + other_cols]
内容的提问来源于stack exchange,提问作者zhangruibo101
相关产品推荐
相关产品推荐

