我正在计算每个“id”的“价格”总和。但是当“loc_id”上有重复时,它应该使用最高价格进行计算,并忽略相同“loc_id”的较低价格。
下面的示例显示了 A-1 的 3 个副本。A-1 的最高价格是 100,所以 A 的总和应该是 100 + 200
df
id loc_id price
A A-1 50
A A-1 100
A A-1 30
A A-2 200
B B-1 30
B B-2 50
Run Code Online (Sandbox Code Playgroud)
df_expected_result
id total average
A 300 150
B 80 40
Run Code Online (Sandbox Code Playgroud)
如果没有 max() 方法,代码会运行,但它会重复计算 loc_id 重复项。我试图避免重复计算。如何让它只选择每个唯一 loc_id 的最大值?
(df.set_index(['id','loc_id'])
.groupby(level=0)['price']
.max()
.agg({'total' : np.sum , 'average' : np.average })
.sort_values('total',ascending=False))
Run Code Online (Sandbox Code Playgroud)
包含 max() 方法时出现错误:
ValueError: cannot perform both aggregation and transformation operations simultaneously
Run Code Online (Sandbox Code Playgroud)