Python 什么';Series.sort()和Series.order()之间的区别是什么?
输出Python 什么';Series.sort()和Series.order()之间的区别是什么?,python,pandas,Python,Pandas,输出 s = pd.Series( nr.randint( 0, 10, 5 ), index=nr.randint(0, 10, 5 ) ) s s.order() s.sort() s order()按值排序并返回新序列 1 3 7 6 2 0 9 7 1 6 输出 s = pd.Series( nr.randint( 0, 10, 5 ), index=nr.randint(0, 10, 5 ) ) s s.order() s.sort() s
s = pd.Series( nr.randint( 0, 10, 5 ), index=nr.randint(0, 10, 5 ) )
s
s.order()
s.sort()
s
order()
按值排序并返回新序列
1 3
7 6
2 0
9 7
1 6
输出
s = pd.Series( nr.randint( 0, 10, 5 ), index=nr.randint(0, 10, 5 ) )
s
s.order()
s.sort()
s
它看起来像是sort
也按值排序,但在适当的位置:
2 0
1 3
7 6
1 6
9 7
输出
s = pd.Series( nr.randint( 0, 10, 5 ), index=nr.randint(0, 10, 5 ) )
s
s.order()
s.sort()
s
这是这两种方法之间的唯一区别吗?查看pandas源代码(并跳过docstring) 将其与声明订单行进行比较(我使用的是0.14.1) 您可以看到,由于sort调用了order函数,因此这两个函数除了默认参数之外,在所有方面都是相同的 如问题中所述,sort
inplace=True
和orderinplace=False
的inplace
参数的默认值不同,但在行为上没有其他差异
另一个唯一的区别是order有一个附加的(但已弃用的)参数,形式为na_last
,不能与sort一起使用(而且无论如何也不应该使用)。您的问题是:(Series.sort
就地v.s.Series.order
返回新obj)这两种方法的唯一区别是什么
熊猫0.17.0最终发布之前(即2015-10-09之前)
简短回答:是的。它们在功能上是等价的
详细回答:
:更改对象本身(就地排序),但不返回任何内容
按值对值和索引标签进行排序。默认情况下,这是一种就地排序系列。订单
是等效的,但返回一个新系列。
所以
什么也不输出。有关更多详细信息,请参阅
:不更改对象,而是返回新的排序对象
按值对序列对象排序,维护索引值链接。默认情况下,这将返回一个新系列系列。排序
是等效的,但作为一种就地方法。
熊猫0.17.0最终发布后(即2015-10-09之后) 排序的API是,事情变得更干净、更愉快 要按值进行排序,
Series.sort()
和Series.order()
都已弃用,替换为返回排序序列对象的新api
总结这些变化(摘自pandas 0.17.0):
你看过文件了吗?和。它看起来像是为了与numpy兼容而存在的
sort()
。我确实读过它们。对于order()
,可以清楚地看到,它按值排序并维护索引值链接。但是对于sort()
,它只是说“按值对值和索引标签进行就地排序”。我认为这很混乱。0.14/master版本的文档更好(很快就会出现)。在Series.order(inplace=True)==Series.sort()
中,我已经搜索了几个小时的解决方案。答案是“inplace=True”。非常感谢。