问题
I have a column in a dataframe
Fruits
Apple
Mango
Banana
Apple
Mango
Banana
Apple
Mango
Grapes
I want to sort this column by Frequency of the values occurring in it, So the dataframe now should be:
Fruits
Apple
Apple
Apple
Banana
Banana
Banana
Mango
Mango
Grapes
Thanks!
回答1:
Create a freq column and then sort by freq and 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
A similar approach by using groupby and count:
df.assign(freq=df.groupby('Fruits')['Fruits'].transform('count'))\
.sort_values(by=['freq','Fruits'],ascending=[False,True]).loc[:,['Fruits']]
来源:https://stackoverflow.com/questions/44363585/sort-by-frequency-of-values-in-a-column-pandas