7

如何反转 Pandas 中 DataSeries 的排序顺序,以便按降序处理它们?

4

2 回答 2

16
In [28]: s = pd.Series([20, 10, 30], ['c', 'a', 'b'])

In [29]: s
Out[29]:
c    20
a    10
b    30
dtype: int64

按索引排序

In [30]: s.sort_index(ascending=False)
Out[30]:
c    20
b    30
a    10
dtype: int64

按值排序

In [31]: s.sort()

In [32]: s[::-1]
Out[32]:
b    30
c    20
a    10
dtype: int64
于 2013-05-07T06:36:24.760 回答
1

我将建议对@Wouter Overmeire的答案进行一些更改:

In []: s = pd.Series([20, 10, 30], ['c', 'a', 'b'])
In []: s
Out[]:
c    20
a    10
b    30
dtype: int64

pandas.Series.sort()方法在 Pandas 0.18.1 中已弃用,但现在pandas.Series.sort_values()可用于(就地或非就地)排序。

s.sort_values()

sort_values方法有关键字可以更改为升序或降序:ascending=True,或不就地排序:inplace=False

并且上一个答案的最后一行代码不是用于按值排序,而是从底部开始返回 Series 的切片。切片方法的工作原理如下:

s[start:end:step]

在上一个答案的示例中,切片从开头(开始位置为空)开始,在结尾(结束为空)结束,它采用每个值(绝对值为 1 的步骤)但从系列的底部开始(步骤为减号“-”)

In[]: s[::-1]
Out[]:
b    30
a    10
c    20
dtype: int64
于 2021-11-08T19:18:08.740 回答