我有一个名为 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)
在进行 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)
| 归档时间: |
|
| 查看次数: |
4148 次 |
| 最近记录: |