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

Python如何实现DataFrame分组值计数并写入Excel独立工作表

pandas分组统计+按客户分Sheet导出实现方案

你现有的分组导出框架逻辑正确,只需要在每个分组写入前补充值计数、拼接统计结果的步骤即可,完整可运行代码如下:

import pandas as pd

# 请确认原始DataFrame变量名、列名和你的实际代码一致
with pd.ExcelWriter("Test.xlsx", engine="openpyxl") as writer:
    for client, group_data in summary2.groupby('Client'):
        # 统计Result、Result2列中两类值的出现次数
        count_expired = group_data[['Result', 'Result2']].apply(lambda col: (col == "Expired").sum())
        count_not_expire = group_data[['Result', 'Result2']].apply(lambda col: (col == "Not Expire").sum())

        # 构造统计结果表,和原表列结构对齐方便拼接
        stat_df = pd.DataFrame(
            [count_expired, count_not_expire],
            index=["Expired计数", "Not Expire计数"]
        ).reset_index(names="统计项")

        # 原始明细 + 空行分隔 + 统计结果拼接
        empty_sep = pd.DataFrame([[None]*len(group_data.columns)], columns=group_data.columns)
        output_sheet_data = pd.concat([group_data, empty_sep, stat_df], ignore_index=True)

        # 处理Excel工作表名非法规则,避免导出报错
        valid_sheet_name = str(client)[:31]\
            .replace('/','_').replace('\\','_').replace('*','_')\
            .replace('?','_').replace(':','_').replace('[','_').replace(']','_')

        # 写入对应客户工作表
        output_sheet_data.to_excel(writer, sheet_name=valid_sheet_name, index=False)

注意事项

  • 代码中Client、Result、Result2列名,以及匹配的字符串Expired、Not Expire需要和你实际数据集的拼写、大小写完全匹配,你原有代码分组用的是小写client,按实际字段名调整即可。
  • 如果运行提示缺少openpyxl依赖,先执行pip install openpyxl安装即可,这是pandas导出xlsx格式文件的标准依赖。
  • 统计逻辑仅计数你指定的两类值,空值、其他异常值不会被计入统计行,符合需求。
  • 原始明细和统计结果中间默认加了一行空行做视觉分隔,不需要的话直接删掉empty_sep相关的拼接代码即可。
  • 默认导出时不保留pandas自动生成的行索引,如果需要保留索引,删掉to_excel方法里的index=False参数即可。
  • 代码自动处理了Excel工作表名的规则限制:工作表名最长31字符,不能包含\ / * ? : [ ]特殊字符,会自动替换为下划线避免导出报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 00:39:25