小编yag*_*giz的帖子

对重复 ID 使用最高值(Pandas DataFrame)

我正在计算每个“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)

python pandas

5
推荐指数
1
解决办法
408
查看次数

标签 统计

pandas ×1

python ×1