python pandas 按组排序

标签 python pandas group-by pivot-table

我的 DataFrame 中的每一行都是用户对餐厅的投票条目。数据看起来像

id   cuisine    
91   american   
3    american   
91   american   
233  cuban      
233  cuban      
2    cuban      

其中 id 指的是餐厅。

我想得到类似下面的东西

american  91   100
          3    30
          12   10
cuban     233  80
          2    33
mexican   22   99
          8    98
          21   82

其中第 2 列是 id,第 3 列是该 id 在 DataFrame 中的行数。换句话说,按行数排序,但按美食分组。我试过了

g = df.groupby(['cuisine', 'id'])
c = g.size().sort_values(ascending=False)

但是菜系的顺序是混杂的。

最佳答案

group_by 之后使用 value_counts 后跟 sort_index

# ascending=[1, 0] says True for level[0], False for level[1]
df.groupby('cuisine').id.value_counts().sort_index(ascending=[1, 0])

cuisine   id 
american  91     2
          3      1
cuban     233    2
          2      1
Name: id, dtype: int64

关于python pandas 按组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38464142/

相关文章:

python - 要使用 python pandas 在一个数据帧中查找另一个数据帧 id 的平均值?

python - Pandas Dataframe 将行绘制为 x 值,将列标题绘制为 y 值

mongodb - 按组连接字符串

mysql - Express引擎 : Custom query - Grouping entries daily

python - 我可以使用 ctypes 为可变参数 Python 函数创建原型(prototype),以便 DLL 可以将此函数作为回调调用吗?

python - 需要帮助在不使用 lambda 的情况下重写 Python 函数

python - 如何在不将每个索引应用于每一行的情况下迭代数据框中的每一行?

python - 有没有一个函数可以再次生成代码,或者更好的想法?

python - 高效处理 300 万个 Pandas 数据框行

python - Pandas 矢量化: Compute the fraction of each group that meets a condition