groupby 后跟一个函数

时间:2021-01-26 03:26:05

标签: python

我有一个这样的数据框

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()

无论如何我可以返回数据帧吗?

1 个答案:

答案 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
相关问题