【问题标题】:find highest value in group, and add value of other column to a new row in python pandas查找组中的最大值,并将其他列的值添加到 python pandas 中的新行
【发布时间】:2022-11-12 22:02:15
【问题描述】:
我有桌子:
| person |
score |
Job type |
| person 1 |
6.5 |
job 1 |
| person 1 |
4.3 |
job 2 |
| person 2 |
1.2 |
job 1 |
| person 2 |
3.4 |
job 2 |
| person 2 |
4.3 |
job 3 |
我想添加一个工作类型的列,得分最高,如下所示:
| person |
score |
Job type |
Higest score |
| person 1 |
6.5 |
job 1 |
job 1 |
| person 1 |
4.3 |
job 2 |
job 1 |
| person 2 |
1.2 |
job 1 |
job 3 |
| person 2 |
3.4 |
job 2 |
job 3 |
| person 3 |
4.3 |
job 3 |
job 3 |
知道如何实现这一目标吗?
【问题讨论】:
标签:
python
pandas
dataframe
【解决方案1】:
您可以使用:
mask=df.sort_values('score').groupby('person').tail(1).rename(columns={'Job type':'Higest_score'})
final=df.merge(mask[['person','Higest_score']],how='left')
final
'''
person score Job type Higest_score
0 person 1 6.5 job 1 job 1
1 person 1 4.3 job 2 job 1
2 person 2 1.2 job 1 job 3
3 person 2 3.4 job 2 job 3
4 person 2 4.3 job 3 job 3
'''