如何对pandas DataFrame不同列分别设置升序、降序排序规则
解决方案
直接调用pandas内置的sort_values()方法,为不同排序列分别指定对应排序方向即可实现需求:
import pandas as pd # 构造示例DataFrame data = pd.DataFrame({"a":[1,3,5,4,2], "b":[1,1,2,1,1]}) # 按规则排序:b列降序,b值相等时a列升序 sorted_df = data.sort_values(by=['b', 'a'], ascending=[False, True]) # 如果需要排序后重置为连续的行索引,可添加ignore_index=True参数: # sorted_df = data.sort_values(by=['b', 'a'], ascending=[False, True], ignore_index=True) print(sorted_df)
运行后输出结果和预期完全一致:
a b 2 5 2 0 1 1 4 2 1 1 3 1 3 4 1
参数说明
by:传入排序优先级的列名列表,此处先按b列排序,b列值相同时再按a列排序ascending:传入和by列表一一对应的布尔值,False代表降序,True代表升序,刚好匹配b列降序、a列升序的要求- 可选参数
ignore_index=True:开启后会重置排序后的DataFrame行索引为从0开始的连续整数,避免保留原表的行索引
内容的提问来源于stack exchange,提问作者Ryan Slattery
相关产品推荐
相关产品推荐

