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

使用Pandas从透视表统计布尔值及DataFrame分组统计需求

没问题!我来帮你实现这个基于A、B、C列分组统计的需求。咱们一步步来:

1. 先还原你的示例DataFrame

首先我们把你给出的数据转换成可运行的pandas DataFrame:

import pandas as pd

data = {
    'A': ['a','a','a','a','a','a','s','s','s','s','d','d','d','d','d'],
    'B': ['z','z','z','z','z','z','x','x','x','x','c','c','c','c','c'],
    'C': ['l','l','l','r','r','r','7','7','7','5','l','l','r','r','r'],
    'D': [1,2,3,1,2,2,2,3,4,1,1,2,1,2,3],
    'E': ['qqq','qqq','qqq','www','www','www','eee','eee','eee','eee','rrr','rrr','fff','fff','fff'],
    'F': [True,True,False,True,False,False,True,False,True,True,True,False,False,True,True]
}

df = pd.DataFrame(data)

2. 分组聚合统计

用groupby配合agg函数,就能按A、B、C的唯一组合,统计你需要的所有指标:

# 按A、B、C分组,定义聚合规则
result = df.groupby(['A', 'B', 'C']).agg(
    D总数量=('D', 'size'),  # 统计每组D列的元素总数(即组内总行数)
    D唯一值数量=('D', 'nunique'),  # 统计每组D列的唯一值个数
    F_True计数=('F', 'sum'),  # 布尔值True会被转为1,sum直接得到True的数量
    F_False计数=('F', lambda x: len(x) - x.sum())  # 组内总行数减去True的数量,就是False的数量
).reset_index()  # 把分组列从索引转回普通列,更符合表格形式

3. 最终统计结果

运行上面的代码后,你会得到如下结构化的统计表格:

ABCD总数量D唯一值数量F_True计数F_False计数
0azl3321
1azr3212
2dcl2211
3dcr3321
4sx51110
5sx73321

简单解释下关键逻辑:

  • groupby(['A','B','C']):指定按这三列的唯一组合作为分组依据
  • agg():通过字典自定义每个统计指标的列名和计算规则
  • reset_index():默认分组后分组列会成为索引,用这个方法把它们转回普通列,方便后续使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:05:43