将 pandas 中的 groupby 语句中的两列相乘

Alb*_*tan 3 python pandas

我有一个名为 df 的简化数据框

import pandas as pd
df = pd.DataFrame({'num': [1,1,2,2],
               'price': [12,11,15,13],
               'y': [7,7,9,9]})
Run Code Online (Sandbox Code Playgroud)

我想按 num 分组,然后将价格和 y 相乘,然后将总和除以 y 的总和

我一直在尝试开始使用这个但遇到了麻烦

df.groupby('letter').agg(['price']*['quantity'])
Run Code Online (Sandbox Code Playgroud)

Ale*_*der 6

在进行 groupby 操作之前,您可以向数据帧添加一个临时列来计算中间结果 ( price * y),然后在 groupby 操作中使用该列(对值求和,然后使用eval来计算 的总和temp除以 的总和y) 。将结果投射回数据框并根据需要调用新列。

>>> (df
     .assign(temp=df.eval('price * y'))
     .groupby('num')
     .sum()
     .eval('temp / y')
     .to_frame('result')
)
     result
num        
1      11.5
2      14.0
Run Code Online (Sandbox Code Playgroud)