Python循环遍历Excel表格,将表格名称添加到列表中,然后连接所有表格。

3

我正在循环遍历Excel工作表并将它们添加到列表中。当循环结束时,我使用Pandas将它们合并成一个数据框(dataframe)。我的问题是如何将工作表名称添加到相应的列表中。

# infile is a filepath variable    
xls = xlrd.open_workbook(infile, on_demand=True)



dfList = []
for sheet_name in xls.sheet_names():
    df = pd.read_excel(infile, sheet_name, header = 0)
    #df['Well_name'] = sheet_name
    dfList.append(df)
    print(sheet_name + " appended.")
    #time.sleep(2)
print("Loop complete")
# Concatenating the appended lists
dfs = pd.concat(dfList, axis=0)

我尝试在df中创建一个新列,但是这导致了长度不匹配,并且由于它不断地被重写到循环中的最后一个工作表名称,所以也没有起作用。您有什么想法或建议吗?
1个回答

3

看起来你遇到了一些作用域问题。避免这个问题的一种方法是使用列表推导式。你也可以在列表推导式中使用pd.DataFrame.assign来添加一个系列:

dfList = [pd.read_excel(infile, sheet_name, header=0).assign(Well_name=sheet_name) \
          for sheet_name in xls.sheet_names()]

dfs = pd.concat(dfList, axis=0)

谢谢@jpp,这正是我想要的! - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接