首页 > 解决方案 > 如何在与特定的分组时替换值?

问题描述

我有一个数据框:

id     type     val   
a1      q       100
a1      v       4
a1      l       17
b1      p       1
b1      j       700
b1      s       3

我想按 id 分组,并在列 val 中保留列类型和求和值。列类型中的值必须是具有最高 val 的值。所以期望的结果必须是:

id     type     val   
a1      q       121
b1      j       704

id a1 的类型是 q,因为它具有最高 val (100),b1 是 j,因为它具有最高 val (700)。怎么做?

标签: pythonpython-3.xpandasdataframegroup-by

解决方案


你可以试试这个:

df.sort_values(by='val', ascending=False).groupby('id').agg({'type': 'first', 'val': 'sum'})

它给:

   type  val
id          
a1    q  121
b1    j  704

推荐阅读