首页 > 解决方案 > Python - 对列进行升序排序 - 使用 groupby

问题描述

以下代码:

import pandas as pd

df_original=pd.DataFrame({\
'race_num':[1,1,1,2,2,2,2,3,3],\
'race_position':[2,3,0,1,0,0,2,3,0],\
'percentage_place':[77,55,88,50,34,56,99,12,75]
})

给出以下输出:

种族编号 比赛位置 百分比位置
1 2 77
1 3 55
1 0 88
2 1 50
2 0 34
2 0 56
2 2 99
3 3 12
3 0 75

我需要维护这个数据框以保持race_num分组,但按升序对百分比位置进行排序 - 并且race_position要与原始数据保持一致percentage_place

想要的结果是:

种族编号 比赛位置 百分比位置
1 0 88
1 2 77
1 3 55
2 2 99
2 0 56
2 1 50
2 0 34
3 0 75
3 3 12

我的尝试是:

df_new = df_1.groupby(['race_num','race_position'])\['percentage_place'].nlargest().reset_index()

先感谢您。

标签: pandasdataframepandas-groupby

解决方案


调查sort_values

In [137]: df_original.sort_values(['race_num', 'percentage_place'], ascending=[True, False])
Out[137]:
   race_num  race_position  percentage_place
2         1              0                88
0         1              2                77
1         1              3                55
6         2              2                99
5         2              0                56
3         2              1                50
4         2              0                34
8         3              0                75
7         3              3                12

推荐阅读