【发布时间】:2019-08-06 05:27:08
【问题描述】:
我有一个 Python 数据框,我想将它写入两个 Excel 文件,每个文件都有三张纸。有五列,前两列在所有三张纸上,最后三列在三张纸上旋转。 Excel 文件基于第一列的值。因此,每个文件将具有相同的三张纸(当然,具有不同的值)。
我有代码可以将不同的列放在一个 Excel 文件的不同工作表上。而且我有代码可以根据列值创建多个 Excel 文件。我想不出将这两种技术结合起来创建多个 Excel 文件的方法,每个 Excel 文件都有多个工作表。
示例数据框:
df = pd.DataFrame({'School': ['School1', 'School1', 'School2', 'School2'],
'Sex': ['M', 'M', 'F', 'F'],
'Q1' : ['Black', 'Black', 'White', 'White'],
'Q2' : ['Good', 'Good', 'Bad', 'Bad'],
'Q3' : ['Up', 'Up', 'Down', 'Down']})
此代码将根据 School 列创建不同的 Excel 文件:
output = df[['School','Sex','Q1']].groupby('School')
output.apply(lambda x: x.to_excel('School' + str(x.name) + '.xlsx'))
此代码将在一个 Excel 文件的不同工作表上放置不同的列:
writer = pd.ExcelWriter('school_tabs.xlsx', engine='xlsxwriter')
df[['School','Sex','Q1']].to_excel(writer, sheet_name='Q1')
df[['School','Sex','Q2']].to_excel(writer, sheet_name='Q2')
df[['School','Sex','Q3']].to_excel(writer, sheet_name='Q3')
writer.save()
期望的输出是:
Excel 文件 1
(sheet 1):
School Sex Q1
School 1 M Black
School 1 M Black
(sheet 2):
School Sex Q2
School 1 M Good
School 1 M Good
(sheet 3):
School Sex Q3
School 1 M Up
School 1 M Up
Excel文件2
(sheet 1):
School Sex Q1
School 2 F White
School 2 F White
(sheet 2):
School Sex Q2
School 2 F Bad
School 2 F Bad
(sheet 3):
School Sex Q3
School 2 F Down
School 2 F Down
【问题讨论】: