You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas循环生成分组DataFrame并导出到同Excel多工作表

实现方法

首先修正你现有代码的笔误:你写的gropuby为拼写错误,正确方法名是groupby,生成分组字典的逻辑可以简化,不需要额外嵌套tuple转换。

自动生成对应命名的独立DataFrame

你已经拿到了按员工分组后的字典,要自动生成和键名同名的可独立访问DataFrame,直接遍历字典动态注入全局变量即可,效果和你手动逐一赋值完全一致:

import pandas as pd

# 正确的分组字典生成代码
staff_groups = dict(report.groupby('Staff'))

# 遍历分组动态赋值
for staff_name, df in staff_groups.items():
    globals()[staff_name] = df

执行完成后,你可以直接输入Bob、Sue这类员工名调用对应DataFrame,不需要手动写赋值语句。
注意:如果员工名存在空格、特殊字符,或是和Python内置函数、你已定义的变量重名,这种方式会出现变量覆盖问题。更稳妥的访问方式还是直接从分组字典取值,比如staff_groups['Bob'],不会污染全局命名空间。

批量导出到同一Excel的独立工作表

借助pandas自带的ExcelWriter即可实现,不需要额外手动维护员工名单,分组有多少个员工就会自动生成多少个工作表:

# 安装依赖:如果未安装openpyxl先执行 pip install openpyxl
with pd.ExcelWriter('员工数据拆分结果.xlsx', engine='openpyxl') as writer:
    # 可选:先写入全量原始数据作为总表方便核对,不需要可以删除这行
    report.to_excel(writer, sheet_name='全量总数据', index=False)
    
    for staff_name, staff_df in staff_groups.items():
        # 替换Excel工作表名不支持的非法字符,同时截断长度到Excel支持的31字符上限,避免导出报错
        valid_sheet_name = staff_name.replace('/', '_').replace('\\', '_').replace('*', '_').replace('?', '_').replace('[', '_').replace(']', '_')[:31]
        staff_df.to_excel(writer, sheet_name=valid_sheet_name, index=False)

代码运行后会在当前脚本所在目录生成员工数据拆分结果.xlsx文件,每个员工的数据会存在对应名称的独立工作表中。如果需要导出为.xls格式,将引擎替换为xlwt即可,注意.xls格式单表最多支持65536行数据,数据量大的场景更推荐使用.xlsx格式。


内容的提问来源于stack exchange,提问作者brandooo23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 15:15:34