我有以下数据框
ID Qnt Rec value
AB1234 20 1 2
xy123 30 1 5
xy123 30 2 2
我正在寻找如下所示的输出。
我需要按 ID 进行分组,当我具有相同的 ID 时,我应该将它们放在同一行中,并乘以 Rec 和 Value 列。 例如。对于 ID xy123
30*1*5*2*2 = 600
ID Qnt output
AB1234 20 40
xy123 30 600
我的方法是将给定的数据帧拆分为 Rec 1 和 Rec 2,然后合并这两个数据帧。我正在寻找其他可行的方法。
代码
out = (df['Rec'].mul(df['value']).groupby([df['ID'], df['Qnt']]).prod()
.reset_index(name='output')
.assign(output=lambda x: x['Qnt'].mul(x['output'])))
出
ID Qnt output
0 AB1234 20 40
1 xy123 30 600
示例代码
import pandas as pd
data1 = {'ID': ['AB1234', 'xy123', 'xy123'], 'Qnt': [20, 30, 30],
'Rec': [1, 1, 2], 'value': [2, 5, 2]}
df = pd.DataFrame(data1)