熊猫value_counts:按值排序,然后按字母顺序排序?

时间:2019-01-30 15:58:27

标签: python pandas

我有以下数据框:

df = pd.DataFrame({
    'fruit':
       ['peaches']*5 + ['apples']*5 + ['bananas']*3 + 
       ['nectarines']*3 + ['carrots']*3 + ['apricots'] 
})

我想得到的输出是首先按值计数排序,然后按水果名称的字母顺序排序:

apples        5
peaches       5
bananas       3
carrots       3
nectarines    3
apricots      1

我找到了this answer,但看起来已经过时了。

2 个答案:

答案 0 :(得分:2)

似乎仅使用value_counts就会产生结果

df.fruit.value_counts()
Out[818]: 
apples        5
peaches       5
bananas       3
carrots       3
nectarines    3
apricots      1
Name: fruit, dtype: int64

更新

df.fruit.value_counts().sort_index(ascending=False).sort_values(ascending=False)    

apples        5
peaches       5
bananas       3
carrots       3
nectarines    3
apricots      1
Name: fruit, dtype: int64

答案 1 :(得分:0)

您可以实现这一点,但输出将是一个元组列表,按水果名称和水果数量的字母顺序排序。首先将 value_counts() 输出转换为字典,然后使用 items 函数将其转换为元组列表并对其进行排序:

sorted(dict(df.fruit.value_counts()).items())