我有一个这样的数据框
name value
a expire
b active
a pending
c pending
a pending
d pending
d expire
我想要这样的回报
name rate
a 0.33
b 0
c 0
d 0.5
逻辑是按'name'分组,然后统计expire,在name分组中使用expire/total number。例如a有一个expire,两个pending,一个组中的总数为3。因此,a应该得到1/3 = 0.33的比率。
我使用了 groupby('name')['value'].value_counts()
无论如何我可以返回数据帧吗?
答案 0 :(得分:0)
使用 pandas.DataFrame.groupby.apply
的一种方式:
df2 = df.groupby("name")["value"].apply(lambda x: x.eq("expire").sum()/len(x))
df2.reset_index()
输出:
name value
0 a 0.333333
1 b 0.000000
2 c 0.000000
3 d 0.500000