在pandas中将value_counts()应用于Series时,默认情况下计数按降序排序,但每个计数内部的值未排序。
如何使每个相同计数内的值按升序排序?
apples 5
peaches 5
bananas 3
carrots 3
apricots 1
在pandas中将value_counts()应用于Series时,默认情况下计数按降序排序,但每个计数内部的值未排序。
如何使每个相同计数内的值按升序排序?
apples 5
peaches 5
bananas 3
carrots 3
apricots 1
df = pd.DataFrame({ 'fruit':['apples']*5 + ['peaches']*5 + ['bananas']*3 +
['carrots']*3 + ['apricots'] })
df.fruit.value_counts().reset_index().sort([0,'index'],ascending=[False,True])
index 0
0 apples 5
1 peaches 5
2 bananas 3
3 carrots 3
4 apricots 1
实际上,我默认得到了相同的结果,因此这里有一个测试,使用 ascending=[False,False]
来证明这确实像建议的那样起作用。
df.fruit.value_counts().reset_index().sort([0,'index'],ascending=[False,False])
index 0
1 peaches 5
0 apples 5
3 carrots 3
2 bananas 3
4 apricots 1
我其实有点困惑于这里所说的升序和降序之间的确切输出目标是什么,但无论如何,在这里有4种可能的组合方式,并且您可以通过更改 ascending
关键字参数来按照任何希望的方式进行排序。
reset_index
将现有的索引转换为列,这使得排序更容易。sort
可以在索引或列上操作,但不能同时操作两者(据我所知)。 - JohnE