【问题标题】: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)

标签: python python-3.x pandas


【解决方案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

【讨论】: