首页 > 解决方案 > 根据分组查找第三列 - Pandas

问题描述

我有三列 id、score1、score2。我需要根据第 3 列创建第四列,列 id 可以分组为 score1 和 score2 是 id 的记录。这是桌子。

id  score1 score2
1   6      10
1   5      12
2   11     22
2   3      15   

第四列应包含 score1 列中的值,条件是它应返回组中 score2 最大的值。

因此,对于上表, score3 表具有如下值。

id  score1 score2 score3
1   6      10      5  
1   5      12      5
2   11     22      11
2   3      15      11

标签: pandaspandas-groupby

解决方案


尝试transform

df['score3']=df.groupby('id').score1.transform('max')
df
Out[411]: 
   id  score1  score2  score3
0   1       5      10       6
1   1       6      12       6
2   2      11      22      11
3   2       3      15      11

检查与

df.id.map(df.groupby('id').score3.idxmax().map(df.score1))
Out[415]: 
0     5
1     5
2    11
3    11
Name: id, dtype: int64

推荐阅读