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

如何在Pandas DataFrame每个分组末尾添加类value_counts()统计行

Pandas 分组后追加自定义分箱统计行实现方案

两种实现路径均可满足需求,可根据最终输出场景选择。


方案1:直接生成带统计行的完整DataFrame

实现逻辑:按分组字段遍历每个子集,先保留原始业务记录,再计算各分箱在所有目标列的计数(自动补全0值的分箱项),将统计块拼接到对应分组末尾,最终合并所有分组得到完整结果。

import pandas as pd

# 1. 初始化数据与配置
# 原始数据(替换为你的实际DataFrame即可)
df = pd.DataFrame({
    "Staff": ["Bob", "Bob", "Tom", "Tom", "Tom", "Tom"],
    "Document A": ["Expired", "Expiring soon", "On Time", "Expiring soon", "Expiring soon", "On Time"],
    "Document B": ["Expired", "On Time", "Expired", "On Time", "Expired", "On Time"]
})
# 配置项:需要统计的分箱列、所有固定分箱值
doc_cols = ["Document A", "Document B"]
bin_values = ["Expired", "Expiring soon", "On Time"]
# 若不想手动写死分箱值,可用下面代码自动提取全量分箱
# bin_values = pd.unique(df[doc_cols].values.ravel())

# 2. 分组拼接原始数据与统计行
output_chunks = []
for group_name, group_data in df.groupby("Staff", sort=False):
    # 加入当前分组的原始业务记录
    output_chunks.append(group_data)
    # 计算各列分箱计数,缺失分箱补0
    stat_block = group_data[doc_cols].apply(
        lambda col: col.value_counts().reindex(bin_values, fill_value=0)
    ).reset_index().rename(columns={"index": "Staff"})
    # 加入当前分组的统计块
    output_chunks.append(stat_block)

# 3. 合并得到最终结果
final_df = pd.concat(output_chunks, ignore_index=True)

运行后final_df的结构和预期的整表效果完全一致。


方案2:按分组导出到独立Excel工作表,每个表末尾追加统计

如果最终需要输出分Sheet的Excel文件,可直接在写入每个工作表前拼接统计行,无需生成整表,实用性更强。

# 复用方案1中的df、doc_cols、bin_values配置
with pd.ExcelWriter("员工文档状态统计.xlsx") as writer:
    for staff, group_data in df.groupby("Staff", sort=False):
        # 计算当前分组的统计块
        stat_block = group_data[doc_cols].apply(
            lambda col: col.value_counts().reindex(bin_values, fill_value=0)
        ).reset_index().rename(columns={"index": "Staff"})
        # 拼接原始数据与统计行
        sheet_data = pd.concat([group_data, stat_block], ignore_index=True)
        # 写入对应员工名称的工作表,关闭索引输出
        sheet_data.to_excel(writer, sheet_name=staff, index=False)

补充说明

  • 统计行可通过Staff列的值和原始业务行区分:原始行该列值为员工姓名,统计行该列值为分箱名称,后续如果需要给统计行设置加粗、填充色等Excel样式,可按这个规则定位行。
  • 如果分箱有自定义排序要求,调整bin_values列表的顺序即可控制统计行的展示顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:51:19