Pandas 按两列值排序
使用此数据帧:Pandas 按两列值排序,pandas,Pandas,使用此数据帧: item XP_home XP_away A 0.000000 5.229861 B 6.412500 0.000000 C 5.037361 0.000000 D 0.000000 3.394792 我可以这样分类: df = df.sort_values(by='XP_home', ascending=False).head(2) 并获得: B 6.412500
item XP_home XP_away
A 0.000000 5.229861
B 6.412500 0.000000
C 5.037361 0.000000
D 0.000000 3.394792
我可以这样分类:
df = df.sort_values(by='XP_home', ascending=False).head(2)
并获得:
B 6.412500 0.000000
C 5.037361 0.000000
A 0.000000 5.229861
D 0.000000 3.394792
或:
并获得:
B 6.412500 0.000000
C 5.037361 0.000000
A 0.000000 5.229861
D 0.000000 3.394792
但是,如何按两列值中的最高值进行排序,以获得:
item XP_home XP_away
B 6.412500 0.000000
A 0.000000 5.229861
C 5.037361 0.000000
D 0.000000 3.394792
您可以跨行按最大值排序:
print (df.assign(val=df[["XP_home", "XP_away"]].max(1))
.sort_values("val", ascending=False).drop("val", 1))
item XP_home XP_away
1 B 6.412500 0.000000
0 A 0.000000 5.229861
2 C 5.037361 0.000000
3 D 0.000000 3.394792
由于
1.1.0
可以使用参数计算排序值
输出:
让我们试试
argsort
out = df.iloc[(-df.filter(like = 'XP').max(1)).argsort()]
item XP_home XP_away
1 B 6.412500 0.000000
0 A 0.000000 5.229861
2 C 5.037361 0.000000
3 D 0.000000 3.394792
肯定是要走的路
out = df.iloc[(-df.filter(like = 'XP').max(1)).argsort()]
item XP_home XP_away
1 B 6.412500 0.000000
0 A 0.000000 5.229861
2 C 5.037361 0.000000
3 D 0.000000 3.394792