【问题标题】:Best method to import multiple related excel files having multiple sheets in Pandas Dataframe在 Pandas Dataframe 中导入具有多个工作表的多个相关 excel 文件的最佳方法
【发布时间】:2018-03-26 19:44:38
【问题描述】:

我有 20 个 excel 文件,每个代表一年,每个文件都有 10 张不同(但相互关联)当年的数据。

如何正确地将它们全部导入pandas数据框中,以进行整个周期的数据分析?

为了说明更多,例如: 我应该为每个 excel 文件(年份)使用字典,其中键是工作表名称,值是工作表内容(数据框)吗?或者在这种情况下正确的方法是什么?

编辑 1:数据是我们的足球联赛信息,每个赛季都在一个单独的 excel 文件中,有多个表格(表格数据示例:俱乐部、球员、比赛、进球、卡片等)。我有 20 年的数据,我即将对其进行分析,但我对使用 pandas 导入它们的不同方式感到不知所措。

谢谢

【问题讨论】:

  • 每张工作表是否具有相同的架构?你想要一个数据框作为结果吗?
  • 为什么不单独加载它们并连接起来?
  • @PaulH 每个 excel 文件都有相同的工作表,但每个工作表有不同的列结构(某些列是通用的引用键值)。我想要正确的方法来导入所有数据,以便我可以操作和分析数据。
  • @PaulH 我在想一个数据框。 (我还用数据的详细信息更新了问题)

标签: python pandas dataframe


【解决方案1】:

这应该适用于 ExcelFile 和 concat。根据评论更新:

import pandas as pd

location1 = r'Location1.xlsx'
location2 = r'Location2.xlsx'

locations = [location1, location2]

frames = []

for loc in locations:
    file = pd.ExcelFile(loc)
    df = file.parse('Sheet1')
    df['source'] = loc.rsplit('\\', 1)[-1]
    frames.append(df)

df = pd.concat(frames)

此方法允许您遍历您的位置并添加一个源列,该列将给出文件名 - 我假设那是年份。请注意,为每张工作表创建一个数据框而不是为所有工作表创建一个庞大的数据框可能会更好,因为我猜测每张工作表的数据结构都不同。您可以根据需要使用合并来加入它们。

此外,如果您的所有文件都在一个位置,您可能会很幸运地使用 glob 函数一次加载所有文件。详情请见Import multiple csv files into pandas and concatenate into one DataFrame

【讨论】:

  • 谢谢。您的意思是我会将每张纸作为单独的数据框(总共 200 张)导入,然后加入它们?如何保留这些数据来自哪个 excelfile(year)?
猜你喜欢
  • 2018-07-09
  • 2019-08-08
  • 1970-01-01
  • 2014-11-09
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 2021-01-27
相关资源
最近更新 更多