首页 > 解决方案 > 计算特定分组值的百分比

问题描述

我有一个数据框:

id       is_good
a1        1
a1        1
a1        0
bb        1
bb        0
bb        0
bb        0
с1        0
с1        0
d2        1
d2        1

如您所见,有些情况下 id 值只有 is_good 类型。我想为每个 id 计算 0 和 1 的百分比。如果 id 值只有 is_good 类型,那么他没有的类型必须是 0%。d2 也一样。所以想要的结果是:

id       is_good_perc
a1        0.67
bb        0.25
с1        0
d2        1      

怎么做?对我来说棘手的部分是 id c1 和 d2 的情况。

我试过这个:

.groupby("id").is_good.value_count(normalize=True)

但它不会为 c1 和 d2 创建 0

标签: pythonpython-3.xdataframegroup-bycount

解决方案


您分组df.is_gooddf.id然后将总和除以计数:

>>> grouped = df['is_good'].groupby(df.id)
>>> df1 = pd.DataFrame(grouped.sum() / grouped.count()).round(2).rename(columns={'is_good': 'is_good_perc'})
>>> df1 
    is_good_perc
id              
a1          0.67
bb          0.25
d2          1.00
с1          0.00

推荐阅读