我正在循环Excel工作表并将它们附加到列表中。当循环结束时,我使用Pandas连接到单个数据帧。我遇到的问题是将工作表名称添加到适当的列表中。
# 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中创建一个新列但是这会产生长度不匹配,但它也无法正常工作,因为它经常被重写为循环中的最后一个工作表名称。
有任何想法或建议吗?
答案 0 :(得分:2)
好像你正在遇到一些范围问题。避免此问题的一种方法是使用列表解析。您还可以使用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)