【问题标题】:Python: Read in Multiple Excel Workbooks into one DataFramePython:将多个 Excel 工作簿读入一个 DataFrame
【发布时间】:2018-09-26 12:01:05
【问题描述】:

我在一个文件夹中有大约 150 个不同的工作簿 (xlsx),我想将它们读入 python 数据框进行分析。

每个工作簿都以相同的工作表名称和列名称进行设置。

我需要将每个工作簿的第一张表(“关键字排名”)上传到每个 DataFrame。对于读入的第一个工作表,我想从第 11 行开始维护列标题;之后的每个工作表我都想从第 12 行开始附加到我的 DataFrame。

我是 Python 新手,一直在网上阅读一些说明,但被卡住了。据我了解,我可以使用 xlrd 库来促进这一点。

我一直在玩下面的代码,但还没有走多远。 “关键字排名”是我要附加的工作表名称。

import pandas as pd
import numpy as np
import glob as glob

all_data = pd.DataFrame()
all_data = pd.ExcelFile("C:\\Users\\John Smith\\Documents\\Analysis\\FPR Nov - Mar 2018\\Dec_1_General.xlsx")
print(all_data.sheet_names)
all_d = all_data.parse('Keywords Rankings')

for f in glob.glob("Users\\John Smith\\Documents\\Analysis\\FPR Nov - Mar 2018\\*.xlsx", recursive=True):
    df = pd.read_excel(f)
    all_d = all_d.append(df,ignore_index=True)

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您不应该不断地附加到现有的pd.DataFrame,因为这会非常低效。

    您应该将pandas.concat 与数据框列表一起使用。

    这可以通过列表理解来促进:

    df = pd.concat([pd.read_excel(f, skiprows=range(10)) for f in files], axis=0)
    

    假设每个 Excel 工作表的第 11 行中存在标题,列将自动对齐。

    【讨论】:

    • 当我为文件 {files = "Documents\Analysis\FPR Nov - Mar 2018*"} 创建变量时,我收到一条错误消息,指出“FileNotFoundError: [Errno 2] No such file or directory : 'D'" 我已经检查过了,我的当前目录是正确的。我应该为文件变量输入不同的内容吗?
    • files 应该是您文件的完整路径列表。您只包含了文件夹名称。所以,是的,您应该查找如何检索完整路径。
    • 我尝试了从 C: 驱动器开始的完整路径名和部分路径名。我一直在末尾使用“\*”来表示我想要最终文件夹中的所有文件。这是正确的符号吗?
    • 我不知道。关于如何使用标准库提取文件名的问题有很多,我建议你查一下。
    猜你喜欢
    • 2022-10-06
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    相关资源
    最近更新 更多