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

如何按类别分组对Pandas DataFrame多列计算True值的占比百分比

Pandas按分组统计布尔列True占比实现方案

布尔值在Pandas数值计算中会自动转为1(对应True)和0(对应False),因此直接对分组后的列求平均值即可得到True值的占比,以下是可直接运行的实现代码:

方法1:简洁通用实现(推荐)

该方法无需手动指定每一列的聚合规则,自动对所有数值类布尔列做计算,适合列数多的场景:

# 基于你已构造好的df直接操作
# 按category分组,对剩余列求平均值(即True占比)
res = df.groupby('category', as_index=False).mean(numeric_only=True)
# 重命名列名匹配需求格式
res.columns = ['category'] + [f"{col} %True" for col in res.columns[1:]]

运行后输出的res就是你需要的结果。

方法2:自定义聚合规则

如果需要更明确的计算逻辑控制,可以用agg自定义聚合函数,直接生成符合要求的列名,无需二次修改:

res = df.groupby('category', as_index=False).agg(
    **{
        f"{col} %True": (col, lambda x: x.sum() / x.count())
        for col in ['col2', 'col3', 'col4']
    }
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:39:03