【发布时间】:2019-09-13 16:55:31
【问题描述】:
我正在尝试将多个具有相同名称的 Excel 中的工作表合并到一个 Excel 工作表中
试过下面的代码:
import os
import pandas as pd
files = os.listdir("XXXX")
print("All files in the given directory are :", files)
files_xlsx = [f for f in files if f[-4:] == 'xlsx']
print("Excel files in this directory are :", files_xlsx)
y = "XXXX"
excels = [pd.ExcelFile(y +'\\'+ name) for name in files_xlsx]
for each in excels:
sheets =pd.ExcelFile(each).sheet_names
print ("Sheet names in these excel files are : ", sheets)
NSheets = len(sheets)
print ("Number of different Sheet names in these excel files are : ", NSheets)
for z in sheets:
frames = [x.parse(x.sheet_names[i], header=None,index_col=None) for x in excels]
frames[1:] = [df[1:] for df in frames[1:]]
combined = pd.concat(frames)
combined.to_excel("XXXX\\Output_" + z + ".xlsx", header=False, index=False)
这会导致使用不同的工作表名称创建多个文件,但所有这些工作表都具有与工作表 1 中相同的数据。数据不正确。
【问题讨论】:
-
在你的
frames = [x.parse(x.sheet_names[i], header=None,index_col=None) for x in excels],你在哪里设置i变量? -
@prebsus 抱歉。那是我正在尝试的事情。它实际上是` frames = [x.parse(x.sheet_names[0], header=None,index_col=None) for x in excels] ` 我知道这将始终返回第一张表。但我不知道如何根据工作表名称创建搜索,以便所有 excel 文件的相同工作表名称仅组合
-
好的,感谢您的澄清。我已尝试在下面的答案中包含您在此处查找的内容(匹配
sheet name而不是sheet position)
标签: excel python-3.x