我有一个 Python Dataframe,我想将其写入两个 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']})
此代码将根据“学校”列创建不同的 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
最佳答案
IIUC,只需迭代您的 groupby
对象即可。这将允许您单独处理每个数据帧。
使用您自己的代码行:
output = df[['School','Sex','Q1']].groupby('School')
for school, df_ in output:
writer = pd.ExcelWriter(f'school_{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()
关于python - 如何将Python数据框写入多个Excel文件的多个工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57366257/