如何在DataFrame按A、C列排序时,对C列重复项的B列排序
DataFrame多列排序优化方案
原始DataFrame:
'A' 'B' 'C' 'D' 1 4 1 'af23' 'z' 2 4 3 'bf14' 'y' 3 4 2 'bf14' 'x' 4 6 4 'cf51' 'w' 5 6 5 'ch63' 'v' 6 5 6 'cm79' 'u'
执行以下排序代码:
df=df.sort_values(by=['A', 'C']).reset_index(drop=True)
得到结果:
'A' 'B' 'C' 'D' 1 4 1 'af23' 'z' 2 4 3 'bf14' 'y' 3 4 2 'bf14' 'x' 4 5 6 'cm79' 'u' 5 6 4 'cf51' 'w' 6 6 5 'ch63' 'v'
可见当C列值重复时,B列未同步排序。需求是按A、C列排序的同时,在C列值相等的场景下,对B列也进行升序排序,目标结果如下:
'A' 'B' 'C' 'D' 1 4 1 'af23' 'z' 2 4 2 'bf14' 'x' 3 4 3 'bf14' 'y' 4 5 6 'cm79' 'u' 5 6 4 'cf51' 'w' 6 6 5 'ch63' 'v'
解决方法
只需在sort_values的by参数中加入B列,明确排序优先级为A→C→B:
df = df.sort_values(by=['A', 'C', 'B']).reset_index(drop=True)
这样就能在A列值相同时先按C列排序,当C列值也相同时,自动按B列升序排列,得到目标结果。
内容的提问来源于stack exchange,提问作者Khaled DELLAL
相关产品推荐
相关产品推荐

