2017-06-05 77 views
1

我在一個數據幀有一列排序的列值的頻率 - 熊貓

水果
蘋果
芒果
香蕉
蘋果
芒果
香蕉
蘋果
芒果
葡萄

我想排序在它出現的值的頻率此列,所以,現在的數據幀應該是:

水果
蘋果
蘋果
蘋果
香蕉
香蕉
香蕉
芒果
芒果
葡萄

謝謝!

+0

https://stackoverflow.com/questions/22391433/count-the-frequency-that-a-value-occurs-in-一個非數據幀列 –

回答

1

創建一個頻率列,然後按頻率和水果名稱進行排序。

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和類似的方法計算:

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