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

如何按DataFrame指定列分组并写入同一Excel的不同工作表

解决按分组写入Excel多工作表的问题

你已经找对了分组的方向,但目前的代码存在两个核心问题:一是反复写入同一个CSV文件会覆盖之前的数据,二没实现写入Excel不同工作表的目标。咱们调整下代码,用pandas的ExcelWriter就能轻松搞定需求:

完整解决方案代码

import pandas as pd

# 构建示例数据(替换成你实际的DataFrame z3即可)
data = {
    'cats': ['[0.9, 1.0)', '[0.1, 0.2)', '[0.1, 0.2)', '[0.0, 0.1)', '[0.3, 0.4)', '[0.9, 1.0)'],
    'predict': ['99%', '30%', '51%', '0%', '12%', '100%']
}
z3 = pd.DataFrame(data)

# 创建ExcelWriter对象,指定输出文件路径
with pd.ExcelWriter('grouped_data.xlsx', engine='openpyxl') as writer:
    # 按cats列分组,遍历每个分组的名称和对应数据
    for group_name, group_data in z3.groupby('cats'):
        # 将当前分组写入同名工作表,关闭索引输出让表格更整洁
        group_data.to_excel(writer, sheet_name=group_name, index=False, encoding='gbk')

关键细节说明

  • 用groupby('cats')直接分组,比手动筛选更高效,还能避免重复处理相同分组的问题
  • ExcelWriter是pandas专门处理多工作表写入的工具,with语句会自动帮你关闭文件,不用手动处理资源释放
  • sheet_name=group_name直接把分组名称作为工作表名,完全匹配你的需求

对比你原有代码的改进点

你之前的代码:

for groups in z3.cats: 
    group=z3[z3['cats']==groups] 
    group.to_csv('group.csv',encoding='gbk')
  • 问题1:遍历z3.cats会重复处理相同分组(比如示例里[0.1, 0.2)出现两次,代码会执行两次写入,覆盖之前内容)
  • 问题2:始终写入同一个group.csv,最终只会保留最后一个分组的数据
  • 问题3:目标是Excel多工作表,但代码输出的是CSV文件

用新代码就能完美解决这些问题,每个分组都会精准写入对应名称的Excel工作表中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:39:21