python - 如何在 Pandas 数据框中保留每组的前 3 行?

标签 python pandas grouping

<分区>

我有一个如下所示的列表:

var1     var2    count
 A        abc      4
 A        abc      3
 A        abc      2
 A        abc      1
 A        abc      1
 B        abc      7
 B        abc      5
 B        abc      2
 B        abc      1
 B        abc      1
 C        abc      4
 C        abc      3
 C        abc      2
 C        abc      1
 C        abc      1

 ....

我想创建一个新的数据框,其中包含每个组的前 3 个“计数”结果。它应该是这样的:

     var1     var2    count
      A        abc      4
      A        abc      3
      A        abc      2
      B        abc      7
      B        abc      5
      B        abc      2
      C        abc      4
      C        abc      3
      C        abc      2
      ....

有没有使用 head() 在 Python 中执行此操作的便捷方法?

最佳答案

解决方案 set_index , groupbySeriesGroupBy.nlargest :

df = df.set_index('var2').groupby("var1")['count'].nlargest(3).reset_index()
print (df)
  var1 var2  count
0    A  abc      4
1    A  abc      3
2    A  abc      2
3    B  abc      7
4    B  abc      5
5    B  abc      2
6    C  abc      4
7    C  abc      3
8    C  abc      2

关于python - 如何在 Pandas 数据框中保留每组的前 3 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42264459/

相关文章:

xslt - 在 for-each-group 之后添加预告片总金额

r - 当使用 group_by() 后跟 summarise() 和 dplyr 时,如何在分组中不包括 NA 观察结果?

python - 使用flask_restful和flask_caching进行循环导入

python - 使用 pandas 合并时如何保留索引

python - selenium 是否写入和读取 webelement 值

python - 根据存储在 DataFrame 列中的 R、G、B 在 plotly 3D 散点图中设置标记颜色

python - Pandas 日期时间到 unix 时间戳秒

使用来自 GROUP 或 RANK 的 WHERE 的 SQL 语句(第 2 部分)

python - 如何将 'JpegImageFile' 转换为字符串以便通过套接字发送

php - 如何让PHP输出声音(哔)?