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

如何用Pandas统计包含True值的分组数量?

统计存在指定值的分组总数

解决方案代码

import pandas as pd

# 构建示例DataFrame
df = pd.DataFrame({
    'group': [1, 1, 1, 2, 2, 2, 3, 3],
    'condition': ["True", "False", "False", "True", "True", "False", "False", "False"]
})

# 可选:将字符串类型的条件值转换为布尔类型,便于后续判断
df['condition'] = df['condition'].map({'True': True, 'False': False})

# 按group分组,检查每个组的condition列是否存在至少一个True
group_has_true = df.groupby('group')['condition'].any()

# 计算总组数和符合条件的分组数
total_groups = len(group_has_true)
count_true_groups = group_has_true.sum()

# 生成期望格式的结果DataFrame
result = pd.DataFrame({
    'groups': [total_groups],
    'total_any_true': [count_true_groups]
})

print(result)

输出结果

groups  total_any_true
0       3               2

关键步骤说明

  • 类型处理:示例中condition列是字符串格式的"True"/"False",转换为布尔类型后可直接用any()方法判断组内是否存在真值;如果不想转换,也可以用lambda x: "True" in x.values替代any()完成判断。
  • 分组判断:groupby('group')['condition'].any()会对每个分组做检查,只要组内有一个True就返回True,最终得到以group为索引、布尔值为结果的Series。
  • 统计结果:len(group_has_true)获取总分组数,sum()统计布尔值为True的数量(布尔值True等价于1,False等价于0)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 12:07:41