我有以下格式的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
如何获得我的预期输出?
答案 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