如何通过工作表名称(Pandas)解析Excel工作表

时间:2019-07-18 21:20:20

标签: python excel pandas parsing concat

我目前有一个代码,该代码可遍历目录中的所有excel文件,并将工作簿中工作表#的所有数据解析为一个最终工作表。我正在尝试让代码通过特定的工作表名称访问工作表,所有excel文件都有一个我试图访问的名为“数据叙事”的工作表。如何使它起作用,而不是按索引位置抓住表?

当前代码如下。

import pandas as pd
from os import listdir
from os.path import isfile, join

onlyfiles = [f for f in listdir('ALL EDTs') if isfile(join('ALL EDTs', f))]



# filenames
excel_names = onlyfiles

# read them in
excels = [pd.ExcelFile('ALL EDTS/'+ name) for name in excel_names]

# turn them into dataframes
frames = [x.parse(x.sheet_names[3], header=None,index_col=None) for x in 
excels]

# delete the first row for all frames except the first
# i.e. remove the header row -- assumes it's the first
frames[1:] = [df[4:] for df in frames[1:]]

# concatenate them..
combined = pd.concat(frames)

# write it out
combined.to_excel("all.xlsx", header=False, index=False)

2 个答案:

答案 0 :(得分:0)

我将为此使用pd.read_excel(),因为它有一个参数来指定工作表名称。假设您所有的文件名都在名为f_names的列表中:

combined = pd.concat(
              pd.read_csv(open(f, 'rb'), sheet_name="Data Narrative") for f in f_names
           )

答案 1 :(得分:0)

欢迎来到Stackoverflow,kaner32!

您只能在sheet_name='Data Narrative.parse类调用函数中使用pd.ExcelFile作为参数。

有关更多信息,请参见文档here

我在this帖子中找到了解决方案。