我有一个像这样简单的数据:
    id sim  col1    col2    year    extra
0   1   1    a       b      2021    H
1   2   2    a       b      2024    A我想通过col1 & col2的df进行分组,并计算类似分组列中的sim。所以我这么做了我也明白了..。
ddf.groupby(["col1", "col2"]).agg({"sim":"list"}).compute()
                  
col1    col2     sim
a        b       [1, 2]我也想保持最高的一年。所以我也这么做了:
ddf.groupby(["col1", "col2"]).agg({"sim":"list", "year":"max"}).compute()得到了这个df:
col1    col2    sim     year    
a         b    [1, 2]   2024注意:看看分组之间的最大年份是2024年,所以我保留了这个。。
但我失去了其他列像id和额外。我还想根据最大年值得到这些列。所以,无论哪一年是最大的,保持这一行。
但我失去了其他栏目,如id,年份和额外的。那我怎么才能得到这个。
预期结果Df:
 id   col1  col2    sim     year    extra
  2    a      b    [1, 2]   2024      A发布于 2022-03-21 16:16:41
对year上的值进行排序,然后使用agg:d对groupby和聚合进行排序,其中sim使用list进行聚合,而其余的列则使用最后一次聚合
d = {**dict.fromkeys(ddf.columns, 'last'), 'sim': 'list'}
ddf.sort_values('year').groupby(['col1', 'col2']).agg(d).reset_index(drop=True)结果
   id     sim col1 col2  year extra
0   2  [2, 1]    a    b  2024     Ahttps://stackoverflow.com/questions/71560517
复制相似问题