如何对基于 DataSeries 的值和索引进行排序?

问题描述 投票:0回答:2

我有一个数据系列(mean_ ratings),如下所示:

A. Morin                  39203.340909
AMMA                      53476.250000
Acalli                    43798.333333
Adi                       41277.500000
Aequare (Gianduja)        45185.000000
                              ...     
Zokoko                    44615.000000
Zotter                    46138.326531
hello cocoa               26162.333333
hexx                      35043.333333
twenty-four blackbirds    36877.666667

我用这个代码对这个系列进行排序:

best_ratings = mean_ratings.sort_values(0,ascending=False) 

Idilio (Felchlin)                  70040.000000
Dole (Guittard)                    65662.500000
Chocola'te                         64725.000000
Christopher Morel (Felchlin)       63787.500000
Madecasse (Cinagra)                62454.166667
Salgado                            61285.000000
Compania de Chocolate (Salgado)    61285.000000
Chloe Chocolat                     61285.000000
Oialla by Bojessen (Malmo)         61285.000000
Rozsavolgyi                        61285.000000

但我想对其进行排序,首先基于值,然后基于字母索引对相等值进行排序。 我怎样才能同时做到这一点?

python pandas sorting series
2个回答
2
投票

您必须在第二种排序中使用

kind='mergesort'
。比如:

df.sort_index().sort_values(ascending=False, kind='mergesort')

0
投票

传递

.sort_values()
您想要排序的列名称的列表,以在多个级别进行排序!

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.sort_values.html

>>> df = pd.DataFrame({'foo':['a', 'a', 'b', 'c'], 'bar':[2,1,4,3]})
>>> df
  foo  bar
0   a    2
1   a    1
2   b    4
3   c    3
>>> df.sort_values(["foo", "bar"])
  foo  bar
1   a    1
0   a    2
2   b    4
3   c    3
>>> df.sort_values(["bar", "foo"])
  foo  bar
1   a    1
0   a    2
3   c    3
2   b    4
© www.soinside.com 2019 - 2024. All rights reserved.