如何根据基于其他列的列对数据框进行排序[重复]

Posted

技术标签:

【中文标题】如何根据基于其他列的列对数据框进行排序[重复]【英文标题】:how to sort a dataframe based on column based on other column [duplicate] 【发布时间】:2019-05-25 10:20:19 【问题描述】:

如何根据再次依赖于其他列的列对数据框进行排序?

DF:

A   B   C
ww  a   70
ww  b   90
ww  c   100
qq  a   100
qq  b   80
qq  c   90
rr  a   80
rr  b   70
rr  c   100

我希望 C 列与 A 列相对应进行排序。这意味着我的 A 列应该是升序的,在 C 列内,值应该以升序变化,而不按照 A 列的顺序发生变化。

输出:

A   B   C
qq  b   80
qq  c   90
qq  a   100
rr  b   70
rr  a   80
rr  c   100
ww  a   70
ww  b   90
ww  c   100

A 列已排序,C 列也已排序。

【问题讨论】:

使用df = df.sort_values(['A','C'], ascending=True) 【参考方案1】:

只需使用df.sort_values(['A', 'C'], ascending=[1, 1]) 先按A 再按C 升序排序:

import pandas as pd

d = 'A': ['ww','ww','ww', 'qq', 'qq', 'qq', 'rr', 'rr', 'rr'],
     'B': ['a','b','c','a','b','c','a','b','c'],
     'C': [70, 90, 100, 100, 80, 90, 80, 70, 100]
df = pd.DataFrame(d)
df = df.sort_values(['A', 'C'], ascending=[1, 1])
print(df)

输出

    A  B    C
4  qq  b   80
5  qq  c   90
3  qq  a  100
7  rr  b   70
6  rr  a   80
8  rr  c  100
0  ww  a   70
1  ww  b   90
2  ww  c  100

【讨论】:

以上是关于如何根据基于其他列的列对数据框进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用laravel中其他表中的列对数据进行排序

基于R中其他列的列值总和[重复]

如何按列对二维数组(锯齿状)进行排序[重复]

根据 r 中的其他列对一个列表中的一列的所有值进行分组

按r中的列对数据帧进行排序[重复]

基于一百列对在 Spark 数据框中创建新列