2017-06-05 1 views
1

Ich habe eine Spalte in einem DatenrahmenSortieren nach Häufigkeit der Werte in einer Spalte - Pandas

Früchte
Apfel
Mango
Banana
Apple-
Mango
Banana
Apple-
Mango
Trauben

Ich mag diese Spalte Häufigkeit der Werte darin vorkommenden sortieren, also der Datenrahmen soll nun:

Früchte
Apfel
Apfel
Apfel
Banana
Banana
Banana
Mango
Mango
Trauben

Danke!

+0

https://stackoverflow.com/questions/22391433/count-the-frequency-that-a-value-occurs-in- a-Datenrahmen-Spalte –

Antwort

1

Erstellen Sie eine Freq-Spalte und sortieren Sie dann nach Freq und Obstnamen.

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 

Ein ähnlicher Ansatz von groupby mit und zählen:

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