首页 > 解决方案 > 将多个 Excel 文件加载到 Pandas 中

问题描述

我在多个(子)文件夹中有大约 5400 个 Excel 文件,并希望将它们加载到单个数据框中。这些文件只有一张纸,每个文件最多可以有 2000 多行。总行数预计为 200 万或更多。

我的电脑有 SSD HD 和 8GB 内存,速度非常快。仍然需要几个小时才能完成。我的代码有什么问题吗?我会很感激任何提示。

%%time
files = glob.glob('asyncDatas/**/*.xlsx',recursive=True)

df = pd.DataFrame()

for num, fname in enumerate(files, start=1):
    print("File #{} | {}".format(num, fname))
    if len(fname) > 0:
        data = pd.read_excel(fname, 'Sheet0', index_col='Time', skiprows=3)
        df = df.append(data)

df.head()

我的预感是 .append 方法需要太多时间,因为它可能是动态重新分配内存?.concat() 可能是更好的方法吗?

标签: pythonpandas

解决方案


首先追加到DataFrames 列表并且最后一次concat,但仍然不确定是否8GB RAM足够(但我希望如此):

dfs = []

for num, fname in enumerate(files, start=1):
    print("File #{} | {}".format(num, fname))
    if len(fname) > 0:
        data = pd.read_excel(fname, 'Sheet0', index_col='Time', skiprows=3)
        dfs.append(data)

df = pd.concat(dfs, ignore_index=True)

推荐阅读