如何在pandas中groupby之后将一列的行相乘?

时间:2018-01-23 16:01:45

标签: python pandas

我有以下格式的pandas数据框:

 user  percent 
  x      0.2
  x      0.5
  x      0.8
  y      0.1
  y      0.6
  y      0.2
  y      0.6

我正在尝试将每个用户的行中的百分比相乘。

在该示例中,x的结果将是0.2 * 0.5 * 0.8 = 0.08

因此,数据框应如下所示:

user     result
  x      0.08
  y      0.0072

如何获得我的预期输出?

2 个答案:

答案 0 :(得分:3)

groupby + prod

df.groupby('user', as_index=False).prod()

  user  percent
0    x   0.0800
1    y   0.0072

或者,使用apply + np.prod -

df.groupby('user', as_index=False).apply(np.prod)

  user  percent
0    x   0.0800
1    y   0.0072

答案 1 :(得分:2)

cumprod + iloc[-1]

df.groupby('user').percent.apply(lambda x : x.cumprod().iloc[-1])
Out[532]: 
user
x    0.0800
y    0.0072
Name: percent, dtype: float64