如何将多份带多工作表的Excel文件合并为Pandas DataFrame
解决多Excel文件及多工作表合并到Pandas DataFrame的问题
一、读取单个含多工作表的Excel文件到DataFrame
如果你的Excel文件包含多个工作表,使用pandas的read_excel时,指定sheet_name=None会返回一个字典——键是工作表名称,值是对应工作表的DataFrame:
import pandas as pd # 读取单个Excel的所有工作表 excel_dict = pd.read_excel("你的文件路径.xlsx", sheet_name=None) # 查看所有工作表名称 print(excel_dict.keys()) # 若所有工作表结构一致,合并成单个DataFrame single_df = pd.concat(excel_dict.values(), ignore_index=True)
如果工作表结构不同,可单独提取指定工作表:
# 提取名为"Sheet1"的工作表 sheet1_df = pd.read_excel("你的文件路径.xlsx", sheet_name="Sheet1")
二、合并多个Excel文件(含1-3个工作表)为单个DataFrame
按以下步骤操作:
- 遍历目标文件夹下的所有Excel文件
- 读取每个文件的所有工作表
- 收集所有工作表的DataFrame到列表
- 合并列表内的所有DataFrame
代码示例:
import pandas as pd import os # 存放所有Excel文件的文件夹路径 folder_path = "你的Excel文件文件夹路径" # 初始化空列表,用于存储所有工作表的DataFrame all_dfs = [] # 遍历文件夹中的Excel文件 for filename in os.listdir(folder_path): if filename.endswith((".xlsx", ".xls")): file_path = os.path.join(folder_path, filename) # 读取当前文件的所有工作表 excel_dict = pd.read_excel(file_path, sheet_name=None) # 将每个工作表的DataFrame加入列表 for df in excel_dict.values(): all_dfs.append(df) # 合并所有DataFrame为单个(假设所有表结构一致) final_df = pd.concat(all_dfs, ignore_index=True)
三、数据清洗常用操作
合并完成后,可根据需求执行以下清洗步骤:
- 处理缺失值:
final_df.dropna()或final_df.fillna(0) - 去除重复行:
final_df.drop_duplicates() - 统一列名:
final_df.columns = ["列名1", "列名2", ...] - 转换数据类型:
final_df["目标列"] = final_df["目标列"].astype(int)
注意:若不同工作表/文件的列结构不一致,合并前需对齐列名——可使用pd.concat的join="outer"参数保留所有列,或提前筛选出结构一致的列再合并。
内容的提问来源于stack exchange,提问作者user21010083
相关产品推荐
相关产品推荐

