设置:我使用的是jupyter笔记本,Python版本3.6.2和Excel版本15.36
我有几个excel文件(每个文件有多个工作表)。我已经加载了每个excel文件(下面的代码),以便为每个excel文件创建一个数据框,该数据框是文件中工作表的有序字典。
import pandas as pd
df1 = pd.read_excel('2014.xlsx', sheetname=None, header=1)
df2 = pd.read_excel('2015.xlsx', sheetname=None, header=1)
..等..
现在,我想遍历每个文件的每个工作表,向包含工作表名称的工作表的每一行添加一个新单元格,然后将所有文件的所有工作表合并为一个大工作表。
我是python的新手,很想听听执行此任务的干净方法。
答案 0 :(得分:0)
因此,要循环遍历所有文件,您可以使用基于列表的简单for循环:
article.hidden {
display: none !important;
}
答案 1 :(得分:0)
不要单独阅读所有内容。你只需要重复一堆命令。设置元数据结构以获取有关工作表的信息:
metadata = [
{'book': 'book1.xlsx', 'sheets': ['sheet1', 'sheet2']},
{'book': 'book2.xlsx', 'sheets': ['sheet1']},
{'book': 'book3.xlsx', 'sheets': ['sheet1', 'sheet2', 'sheet3']},
{'book': 'book4.xlsx', 'sheets': ['sheet1', 'sheet2']},
]
并使用pandas.concat
方法将列添加到assign
,以便将列添加到每本书中。
new_df = pandas.concat([
pandas.read_excel(md['book'], sheetname=s).assign(book=md['book']
for md in metadata for s in md['sheets']
], ignore_index=True)
这有点简洁,而且对于经验较少的python / pandas用户而言,难以阅读。如果你要用正常的for
循环写出来,它看起来像这样:
_dfs = []
for md in metadata:
for s in md['sheets']:
_dfs.append(
pandas.read_excel(md['book'], sheetname=s)
.assign(book=md['book']
)
df = pandas.concat(_dfs, ignore_index=True)