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

如何用循环读取多个Excel文件并合并为单个DataFrame?

解决多个Excel文件合并为单个DataFrame的问题

嗨,我来帮你搞定这个需求!你当前的代码问题在于每次循环都用新读取的temp直接覆盖了temp_final,导致之前读取的文件数据全部丢失,最后只剩下最后一个文件的内容。下面给你两种实用的实现方式,推荐第一种,因为在处理大量文件时效率更高:

方法一:先存入列表再合并(推荐)

这种方式是先把每个读取的DataFrame存入一个列表,最后一次性用pd.concat合并,比每次循环追加更高效,也更易维护。

import pandas as pd

# 假设你的path是包含所有Excel文件路径的列表,比如:
# path = ["file1.xlsx", "file2.xlsx", "file3.xlsx", ..., "file9.xlsx"]
temp_list = []

# 注意:range(1,10)生成的是1-9的数字,而列表索引从0开始,所以要用i-1取path里的元素
for i in range(1, 10):
    temp = pd.read_excel(path[i-1])
    temp_list.append(temp)

# 合并所有DataFrame,ignore_index=True用来重置合并后的索引,避免索引混乱
temp_final = pd.concat(temp_list, ignore_index=True)

方法二:循环中直接追加到空DataFrame

如果你习惯直接在循环里处理,也可以先初始化一个空DataFrame,每次用pd.concat把新读取的内容追加进去(注意:旧版pandas的append方法已经被弃用,所以推荐用concat):

import pandas as pd

# 初始化一个空的DataFrame
temp_final = pd.DataFrame()

for i in range(1, 10):
    temp = pd.read_excel(path[i-1])
    # 把新读取的temp和temp_final合并,重置索引
    temp_final = pd.concat([temp_final, temp], ignore_index=True)

重要注意事项

  • 索引问题:一定要注意range(1,10)和列表path的索引对应关系,path是从0开始的,所以要用i-1来获取对应的文件路径,否则会出现索引越界错误。
  • 列结构一致性:如果你的Excel文件列结构不一样,pd.concat会保留所有列,缺失的列会用NaN填充,如果你需要统一列结构,最好在读取后先做列名匹配或过滤处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:06:20