如何按类别分组对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
相关产品推荐
相关产品推荐

