python - 如何将Python数据框写入多个Excel文件的多个工作表

标签 python pandas

我有一个 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/

相关文章:

python - 如何选择数值最大的列名作为新的列元素?

python - 即使安装了 Pandas 模块也无法运行

Python pandas 检查行是否包含字符串

python - Scrapy start_urls 未解析

python-3.x - 根据 Count > 1 在 pandas 中创建 df

python - 如何根据列表重新排序数据框? Pandas

Python Pandas : add list to df of different len

python - 如何绘制数据框的每一行的条形图

Python 使用 'OR 和正则表达式

python - 如何用Python处理xml文件中的 "<?"注释