python - 计算特定分组值的百分比
问题描述
我有一个数据框:
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
解决方案
您分组df.is_good
,df.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
推荐阅读
- c# - c#中sha256对字符串进行加密和解密
- php - PHP/SQL 使用一个 SELECT 语句从多个其他 lat/lng 位置获取所有 lat/lng 位置
- php - 无法根据此查询获得低库存商品
- sql - 如何在 SQL 中计算相对于午夜的平均时间?
- python-3.x - Pandas python合并多个文件文本
- ansible - 使用变量名而不是字符串引用 ansible 的 hostvars 字典中的键
- c - 将 CSV 文件中的数据添加到 Struct
- delphi - 将 ConnectForm 字段从 ZeosLib 转换为 FireDAC
- python-3.x - 远程主机强制关闭现有连接 [BigChainDB]
- bash - 为什么`cat \`会返回提示?