You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pd.read_excel()读取大Excel文件为单个DataFrame及动态方案

读取多工作表大Excel文件为单个DataFrame的方案

一、用pd.read_excel()合并多工作表为单个DataFrame

你可以按以下步骤实现:

  1. 先获取Excel文件的所有工作表名称
  2. 遍历读取每个工作表的数据
  3. 合并所有读取到的DataFrame

示例代码:

import pandas as pd

# 替换为你的Excel文件路径
file_path = "your_file.xlsx"

# 加载Excel文件并获取所有工作表名
xls = pd.ExcelFile(file_path)
sheet_names = xls.sheet_names

# 存储每个工作表的DataFrame
dfs_list = []
for sheet in sheet_names:
    # 读取单个工作表
    sheet_df = pd.read_excel(xls, sheet_name=sheet)
    dfs_list.append(sheet_df)

# 合并所有DataFrame,ignore_index重置索引
combined_df = pd.concat(dfs_list, ignore_index=True)

如果各工作表列结构不一致,可通过concat的join参数调整:

  • 用join='outer'保留所有列(默认行为)
  • 用join='inner'只保留所有工作表共有的列

二、应对行数增长的动态解决方案

针对未来文件行数持续增加的场景,可采用以下方案避免内存溢出并提升效率:

1. 分块读取

使用chunksize参数将每个工作表分块读取,逐块存入列表后合并,适合超大型文件:

dfs_list = []
for sheet in sheet_names:
    # 按10000行/块读取,可根据内存情况调整数值
    for chunk in pd.read_excel(xls, sheet_name=sheet, chunksize=10000):
        dfs_list.append(chunk)
combined_df = pd.concat(dfs_list, ignore_index=True)

2. 优化数据类型

读取时指定列的dtype,减少内存占用:

  • 对于重复值较多的字符串列,指定为category类型
  • 对于数值列,用更小的数值类型(如int32/float32代替默认的int64/float64)

示例:

sheet_df = pd.read_excel(
    xls, 
    sheet_name=sheet, 
    dtype={
        "分类列": "category",
        "计数列": "int32",
        "百分比列": "float32"
    }
)

3. 按需读取列

如果不需要所有列,用usecols参数指定目标列,减少加载的数据量:

sheet_df = pd.read_excel(xls, sheet_name=sheet, usecols=["用户ID", "订单金额", "下单时间"])

内容的提问来源于stack exchange,提问作者vineet singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 20:32:21