如何对Pandas DataFrame按多列混合升降序规则排序
Pandas DataFrame多列混合升降序排序方法
要实现多列分别按升序、降序混合排序,直接使用Pandas原生的sort_values()方法即可,不需要设置自定义排序键,也无需调用pd.Categorical,完全适配列唯一值数量较多的场景。
具体实现方式为:
- 将需要排序的列按优先级从高到低组成列表,传入
by参数 - 给
ascending参数传入长度和排序列相同的布尔值列表,True对应列升序,False对应列降序
示例代码
构造测试数据
import pandas as pd my_df = pd.DataFrame({'col1':['a','a','a','a','b','b','b','b','c','c','c','c'], 'col2':[1,1,2,2,1,1,2,2,1,1,2,2], 'col3':[1,2,1,2,1,2,1,2,1,2,1,2]})
执行排序
按照col1降序、col2降序、col3升序的规则排序:
sorted_df = my_df.sort_values(by=['col1', 'col2', 'col3'], ascending=[False, False, True])
排序后的结果会优先按col1倒序排列,col1取值相同的行再按col2倒序排列,前两列取值都相同的行最终按col3正序排列,完全匹配需求。
内容的提问来源于stack exchange,提问作者Felipe D.
相关产品推荐
相关产品推荐

