如何在Pandas中独立排序DataFrame多列(不保留数据关联性)
解决方案
不需要借助sort_values的key参数实现,因为sort_values本质是基于行的排序(会保留行内列的关联)。要实现各列独立排序,直接对每一列单独排序后重新构造DataFrame即可:
实现代码
import pandas as pd records = [ {"a": 10, "b": 22}, {"a": 11, "b": 21}, {"a": 60, "b": 200}, {"a": 70, "b": 40}, {"a": 10, "b": 30}, ] df = pd.DataFrame.from_records(records) # 按需求独立排序各列:a列升序,b列降序 df_sorted = pd.DataFrame({ "a": df["a"].sort_values(ascending=True).values, "b": df["b"].sort_values(ascending=False).values }) print(df_sorted)
运行结果
a b 0 10 200 1 10 40 2 11 30 3 60 22 4 70 21
说明
- 这种方式完全断开了原行的列关联,每一列都是独立排序后的结果。
- 无需自定义复杂排序算法,直接利用pandas内置的
sort_values处理单列即可满足需求。 - 若强行使用
sort_values的key参数,无法打破行数据的关联性,因为该参数仅用于生成每列的排序键,最终排序仍基于行的整体逻辑,不适合实现列独立排序。
内容的提问来源于stack exchange,提问作者Rodrigo
相关产品推荐
相关产品推荐

