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