python - 按列中值的频率排序 - Pandas

标签 python sorting pandas

我在数据框中有一列

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

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

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

谢谢!

最佳答案

创建一个频率列,然后按频率和水果名称排序。

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']]
查看所有列:
df.assign(freq=df.groupby('Fruits')['Fruits'].transform('count'))\
  .sort_values(by=['freq','Fruits'],ascending=[False,True])

关于python - 按列中值的频率排序 - Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44363585/

相关文章:

python - 从父文件列表中列出子文件 Google Drive SDK

python - 箱线图和散点图 : Disappearing X Ticks

python - 如何将文本附加到 'column' 值

python - 用于在标记内查找短语的正则表达式

python - 为什么第8行递归代码的参数是 'string[:i] + string[i + 1:]'而不是 'string'

python - Python 3.x 的 SQLite 版本

sorting - Directory.GetFiles 按日期排序

c - 如何按字母顺序对字符串数组进行排序(区分大小写,非标准排序规则)

perl - 在 Perl 中获取按修改日期排序的文件列表

python - Pandas 数据框到系列