如何将已生成的.xlsx文件列表读取并拼接为单个pandas DataFrame?
多个xlsx文件拼接为单个DataFrame实现方案
前置依赖
首先确保安装pandas和xlsx读取依赖,未安装可执行以下命令:pip install pandas openpyxl
完整实现代码
将你现有代码和读取拼接逻辑整合如下:
from os import listdir import pandas as pd working_directory = 'N:/path to files' def find_xlsx_filenames(path_to_dir, suffix=".xlsx"): """ 返回指定目录path_to_dir下所有后缀为给定suffix(默认值为".xlsx")的文件名字符串列表。 """ filenames = listdir(path_to_dir) return[filename for filename in filenames if filename.endswith(suffix)] # 生成文件夹下所有xlsx文件的列表 filenames = find_xlsx_filenames(working_directory) # 读取所有文件并存入DataFrame列表 df_list = [] for filename in filenames: # 拼接文件的完整路径,避免读取时找不到文件 full_path = f"{working_directory}/{filename}" # 读取xlsx文件,默认读取第一个sheet,第一行为表头 df = pd.read_excel(full_path, engine="openpyxl") # 可选:新增一列标记该行数据来源的文件名,方便后续核对 # df["source_file"] = filename df_list.append(df) # 拼接所有DataFrame为一个,ignore_index=True用于重置全局索引,避免索引重复 full_df = pd.concat(df_list, ignore_index=True) # 可以打印查看拼接后的结果 print(full_df.head()) # 如需导出为单个Excel可执行: # full_df.to_excel("合并后的文件.xlsx", index=False, engine="openpyxl")
常见参数调整说明
- 若你的Excel表头不在第一行,可在
pd.read_excel中添加header=N参数,N为表头实际所在行的序号(从0开始计数) - 若需要读取指定Sheet,可添加
sheet_name参数,传入Sheet名称或序号(从0开始计数) - 若需要跳过文件开头的无效行,可添加
skiprows=N参数,N为需要跳过的行数 - 若不同文件的列名不一致,拼接后缺失的列会自动填充为空值
内容的提问来源于stack exchange,提问作者miquiztli_
相关产品推荐
相关产品推荐

