Python 为什么在Pandas系列上调用.sort()函数对其值进行适当排序,但不返回任何结果?
对不起,我想我遗漏了一些非常基本的东西:Python 为什么在Pandas系列上调用.sort()函数对其值进行适当排序,但不返回任何结果?,python,python-3.x,pandas,Python,Python 3.x,Pandas,对不起,我想我遗漏了一些非常基本的东西: >>> Series([3,4,0,3]).sort() 输出无,而 >>> Series([3,4,0,3]).order() 2 0 0 3 3 3 1 4 dtype: int64 sort()缺少什么 谢谢 编辑: 谢谢你的回答,我现在意识到这是一个适当的分类。但我不明白为什么 >>> s = Series([3,4,0,3]).sort() >>>
>>> Series([3,4,0,3]).sort()
输出无,而
>>> Series([3,4,0,3]).order()
2 0
0 3
3 3
1 4
dtype: int64
sort()缺少什么
谢谢
编辑:
谢谢你的回答,我现在意识到这是一个适当的分类。但我不明白为什么
>>> s = Series([3,4,0,3]).sort()
>>> s
不返回已排序的序列。如果我理解,它应该返回已排序的序列 .sort()
就地排序
这意味着在调用.sort()
后,现有数组已被排序。它不会返回任何东西
以“核心”Python为例:
熊猫也是如此,如以下文件所述:
按值对值和索引标签进行就地排序。与ndarray API兼容。无返回值
另请参见:与大多数其他python iTerable一样,Series.sort()实际上不返回任何内容,只对序列进行适当的排序。请参见排序python列表的示例:
In [2]: foo = [5, 3, 9]
In [3]: foo.sort()
In [4]: foo
Out[4]: [3, 5, 9]
实际上,[3]中的将不输出任何内容,您可以检查:
In [4]: type(s)
Out[4]: NoneType
原因是:
pd.Series([3,4,0,3])
确实返回一个Series
类型对象,但是Series.sort()
method由于就地排序,因此不返回任何内容。因此,LHS中的表达式s=pd.Series([3,4,0,3]).sort()
,s
没有从RHS获得任何信息,因此[3]:s中的没有输出任何信息
请注意:
在版本0.17.0之后,按值进行排序的方法pandas.Series.sort()
和pandas.Series.order()
被弃用,取而代之的是统一的pandas.Series.sort\u values()
API。有关更多详细信息,请参阅
.sort()和order()函数都已弃用
.sort_values()函数是替代函数,下面是如何使用它的示例
例如:
import numpy as np
import pandas as pd
arr = np.array([1,3,4,2])
series = pd.Series(arr)
升序
相当于旧版本中的.order()函数
ascending = series.sort_values()
降序
相当于.order(升序=假)
到位
相当于旧版本中的.sort()。
series.sort_values(inplace=True)
基本上是未回答问题的重复。谢谢,它没有出现在搜索结果中。现在,该答案比已接受的答案更正确。在Pandas==0.22 Series下,sort_values()是正确的。对于Pandas,此解决方案已过时,请参阅其他答案。检查我的答案,它显示了Pandas的最新版本,说明如何就地排序系列值或创建排序元素的新系列对象。
ascending = series.sort_values()
descending = series.sort_values(ascending=False)
series.sort_values(inplace=True)