python - 如何在pandas中分组后从每组中选择前n行?

标签 python pandas

我有一个具有以下形状的 Pandas 数据框

 open_year, open_month, type, col1, col2, ....

我想在每个(年,月)中找到顶级类型,所以我首先找到每个(年,月)中每种类型的计数
freq_df = df.groupby(['open_year','open_month','type']).size().reset_index()
freq_df.columns = ['open_year','open_month','type','count']

然后我想根据每个(year_month)的频率(例如计数)找到前 n 个类型。我怎样才能做到这一点?

我可以用 nlargest但我缺少类型
freq_df.groupby(['open_year','open_month'])['count'].nlargest(5)

但我错过了专栏 type

最佳答案

我建议先按降序对您的计数进行排序,您可以调用 GroupBy.head后-

(freq_df.sort_values('count', ascending=False)
        .groupby(['open_year','open_month'], sort=False).head(5)
)

关于python - 如何在pandas中分组后从每组中选择前n行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50415632/

相关文章:

将 Camel 案例转换为蛇案例的python函数

python - 将值设置为 pandas 数据框的整列

python - 合并两个不同形状的 Pandas 数据框时出现问题?

python - 为有效的 MySQL 列名过滤字符串

python - 精度卡在 50% Keras

python - 找到满足条件的特定值 - python

python - Pandas 根据行中其他单元格的值为单元格赋值

python - 获取 Pandas 数据框中满足特定条件的行(字符串)的百分比

Python:以字节为单位的正则表达式和字符串长度

python - 如何使用 python Psycopg2 和参数绑定(bind)在 postgres 数组列中插入?