使用 Python 导入 - 将多个 excel 文件导入数据框

Posted

技术标签:

【中文标题】使用 Python 导入 - 将多个 excel 文件导入数据框【英文标题】:Import using Python - multiple excel files into a dataframe 【发布时间】:2018-02-22 15:17:42 【问题描述】:

我想遍历一个目录并找到特定的 xlsx 文件,然后将它们分别放入单独的 pandas 数据框中。这里的问题是我还希望这些 excel 文件中的所有工作表都在数据框中。

下面是我实现的代码示例,我只需要添加逻辑来选择所有工作表:

import pandas as pd
from glob import glob

path = 'path_to_file'

files = glob(path + '/*file*.xlsx')

get_df = lambda f: pd.read_excel(f)

dodf = f: get_df(f) for f in files

dodf[files[2]] --- dictionary of dataframes 

【问题讨论】:

我已经创建了一个字典来访问每个数据帧。所以当前的方法应该没问题,即在字典中。 【参考方案1】:

如 Pandas 中的 this answer 所述,您仍然可以访问 ExcelFile 类,该类会加载文件并创建对象。

此对象有一个.sheet_names 属性,它为您提供当前文件中工作表名称的列表。

xl = pd.ExcelFile('foo.xls')
xl.sheet_names  # list of all sheet names

要实际处理特定工作表的导入,请在导入的 Excel 文件的对象上使用.parse(sheet_name)

xl.parse(sheet_name)  # read a specific sheet to DataFrame

对于您的代码,类似于:

get_df = lambda f: pd.ExcelFile(f)
dodf = f: get_df(f) for f in files

...为您提供dodf ExcelFile 对象的字典。

filename = 'yourfilehere.xlsx'
a_valid_sheet = dodf[filename].sheet_names[0] # First sheet
df = dodf[filename].parse(sheet_name)

【讨论】:

我不想手动输入文件名。有没有办法从我创建的字典 dodf 中获取它?我对 Python 完全陌生,所以我不知道它是如何工作的。 是的——但您需要将pd.read_excel(f) 更改为pd.ExcelFile(f)。完成后,每个对象都将具有 .sheet_names 属性,该属性是该文件中的工作表列表。 是的,我已经这样做了。但是,我必须单独将每个工作表解析到数据框中,对吗? @ManasJani 没错。但是您可以遍历 sheet_names 的列表来执行此操作,例如for sheet in your_xls_obj.sheetnames: df = your_xls_obj.parse(sheet)

以上是关于使用 Python 导入 - 将多个 excel 文件导入数据框的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python合并多个excel文件

打开多个Excel文件以分离熊猫数据框

Python合并多个Excel工作簿

如何使用 C# 将多个 Excel 工作表导入 SQL 表?

使用 SSIS 将多个 Excel 文件导入表中

使用python将excel数据导入数据库