按照计数值降序和值升序的方式对pandas的value_counts()进行排序。

3

在pandas中将value_counts()应用于Series时,默认情况下计数按降序排序,但每个计数内部的值未排序。

如何使每个相同计数内的值按升序排序?

apples    5
peaches   5
bananas   3
carrots   3
apricots  1

1
请问您能否展示一下DataFrame或Series的示例以及期望的输出结果? - styvane
1
你是在说索引值吗?不幸的是,默认排序总是按降序排序。我已经发现了。 - EdChum
1个回答

4
value_counts的输出本身就是一个series对象(与输入相同),所以您可以使用任何series对象的标准排序选项。例如:
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()这一部分。你能在这里解释一下它的作用吗? - o17t H1H' S'k
还需要在 to_csv 中添加例如:, header=False, index=False。 - o17t H1H' S'k
2
reset_index将现有的索引转换为列,这使得排序更容易。sort可以在索引或列上操作,但不能同时操作两者(据我所知)。 - JohnE

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