我知道这个问题已经问过几次了。但是,没有一个答案符合我的情况。
我有一个带有列,部门和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”。请帮助我。
您可以交换列表中的列以及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',],ascending=[False, False])
print (df2)
Department Employee_Count
4 xyz 15
2 bca 11
1 adc 10 <-
0 abc 10 <-
3 cde 9
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句