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

我有一个这样的数据框:


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


慕莱坞森
浏览 138回答 2
2回答

肥皂起泡泡

这非常简单:将列及其升序标志都传递给sort_values:import pandasdf = 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

慕斯王

我不是特别喜欢执行以下操作,但这仍然是解决该问题的另一种方法:print(pd.DataFrame(sorted(df.values,key=lambda x: x[1],reverse=True),columns=df.columns))输出:    name  value0    sun     201    mom     202    ray     103    ate     104    pea      75   kite      66  dance      5
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python