按列中值的频率排序 - 熊猫

时间:2017-06-05 07:14:10

标签: python sorting pandas

我在数据框中有一列

水果
苹果
                                                                芒果
香蕉
苹果
                                                                芒果
香蕉
苹果
                                                                芒果
葡萄

我想按照其中出现的值的频率对此列进行排序,因此数据框现在应为:

水果
苹果
                                                                苹果
苹果
香蕉
                                                               香蕉
香蕉
芒果
                                                                芒果
葡萄

谢谢!

1 个答案:

答案 0 :(得分:1)

创建一个freq列,然后按freq和fruit name进行排序。

df.assign(freq=df.apply(lambda x: df.Fruits.value_counts()\
  .to_dict()[x.Fruits], axis=1))\
  .sort_values(by=['freq','Fruits'],ascending=[False,True]).loc[:,['Fruits']]
Out[593]: 
   Fruits
0   Apple
3   Apple
6   Apple
1   Mango
4   Mango
7   Mango
2  Banana
5  Banana
8  Grapes

使用groupby和count的类似方法:

df.assign(freq=df.groupby('Fruits')['Fruits'].transform('count'))\
  .sort_values(by=['freq','Fruits'],ascending=[False,True]).loc[:,['Fruits']]