对 Pandas Series 进行排序

29
我试图找出如何以聪明的方式对groupby聚合生成的Series进行排序。
我生成DataFrame的聚合结果如下:
means = df.testColumn.groupby(df.testCategory).mean()

这将生成一个Series。我现在尝试按值进行排序,但出现错误:

means.sort()
...
-> Exception: This Series is a view of some other array, to sort in-place you must create a copy

然后我尝试创建一个副本:

meansCopy = Series(means)
meansCopy.sort()
-> Exception: This Series is a view of some other array, to sort in-place you must create a copy

我该如何实现这种排序?

1个回答

34

使用 sort_values,即 means = means.sort_values()。[Pandas v0.17+]


(很旧的回答,v0.17之前/2015年)

pandas曾经使用 order() 方法: means = means.order()


5
所有这些 .sort_index(), .argsort() 等等都让人感到非常困惑... 文档中没有提供足够的信息... - smci
同意@smci的观点。如果有人能够编辑这个答案以更好地解释它,那将不胜感激。我在使用从数据框中选择出来的一系列数据时遇到了这个问题(而不是从groupby中选择的数据)。 - Joe Germuska
1
你可以使用.sort(inplace=False),它等同于.order()。不同之处在于,order会创建一个新的Series对象,而sort默认情况下不会。 - NeoJi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接