我有以下数据框:
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,但看起来已经过时了。
答案 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())