按升序(字母顺序)对一列进行排序,但对另一列的值按降序排序?仔细看看预期的输出

时间:2018-06-22 10:35:02

标签: python pandas sorting

我有一个这样的数据框:

name     value
ray     20
sun     20
mom     10
ate     10
pea      7
kite     6
dance    5

我想这样排列:

ray 20
sun 20
ate 10
mom 10
pea 7
kite 6
dance 5

2 个答案:

答案 0 :(得分:0)

这非常简单:将列及其升序标志都传递给sort_values

import pandas

df = pandas.DataFrame({
    'name': ['ray', 'sun', 'mom', 'ate', 'pea', 'kite', 'dance'],
    'value': [20, 20, 10, 10, 7, 6, 5]
})

df.sort_values(by=['value', 'name'], ascending=[False, True])
#    name  value
# 0  ray   20
# 1  sun   20
# 3  ate   10
# 2  mom   10
# 4  pea    7
# 5  kite   6
# 6  dance  5

答案 1 :(得分:0)

我不是特别喜欢执行以下操作,但这仍然是另一种解决方案:

print(pd.DataFrame(sorted(df.values,key=lambda x: x[1],reverse=True),columns=df.columns))

输出:

    name  value
0    sun     20
1    mom     20
2    ray     10
3    ate     10
4    pea      7
5   kite      6
6  dance      5