大熊猫:基于多个列对数据框进行排序

我知道这个问题已经问过几次了。但是没有一个答案符合我的情况。

我有一个带有列,部门和employee_count的熊猫数据框。我需要按降序对employee_count列进行排序。但是,如果两个employee_counts之间有平局,则应根据部门按字母顺序对它们进行排序。

   Department Employee_Count
0    abc          10
1    adc          10
2    bca          11
3    cde          9
4    xyz          15

required output:

   Department Employee_Count
0    xyz          15
1    bca          11
2    abc          10
3    adc          10
4    cde          9

这是我尝试过的。

df = df.sort_values(['Department','Employee_Count'],ascending=[True,False])

但这只是按字母顺序对部门进行排序。

我也尝试过先按部门排序,然后再按Employee_Count排序。像这样:

df = df.sort_values(['Department'],ascending=[True])
df = df.sort_values(['Employee_Count'],ascending=[False])

这也不能给我正确的输出:

   Department Employee_Count
4    xyz          15
2    bca          11
1    adc          10
0    abc          10
3    cde          9

它首先给出'adc',然后给出'abc'。 请帮助我。

shanzei05215 回答:大熊猫:基于多个列对数据框进行排序

您可以交换列表中的列以及ascending参数中的值:

说明

列名的顺序是排序的顺序,首先按Employee_Count降序,如果Employee_Count中的某些重复项然后按Department进行排序,则仅重复行升序。

df1 = df.sort_values(['Employee_Count','Department'],ascending=[False,True])
print (df1)
  Department  Employee_Count
4        xyz              15
2        bca              11
0        abc              10 <-
1        adc              10 <-
3        cde               9

或者为了测试是否使用第二个False,然后重复的行正在排序descending

df2 = df.sort_values(['Employee_Count','Department',],False])
print (df2)
  Department  Employee_Count
4        xyz              15
2        bca              11
1        adc              10 <-
0        abc              10 <-
3        cde               9
本文链接:https://www.f2er.com/3168094.html

大家都在问