使用 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 文件导入数据框的主要内容,如果未能解决你的问题,请参考以下文章