【问题标题】:Sorting columns and selecting top 'n' from a grouped column in pandas dataframe对列进行排序并从 pandas 数据框中的分组列中选择前“n”
【发布时间】:2021-03-01 18:52:54
【问题描述】:

我有一个这样的数据框:

我想对“pidx”列进行分组,然后找到得分最高的前 3 个“day_no”。

我正在寻找的结果是这样的:

我尝试的是:

df.sort(['pidx','score'],ascending = False).groupby('pidx').head(2) 

它部分工作,但我没有得到预期的结果。

我可以使用什么其他方法来获得所需数据帧格式的结果?

【问题讨论】:

  • 如果您在问题中包含复制/可粘贴示例数据框定义,您通常会更快地获得帮助。
  • 为什么只能部分发挥作用,与您的预期有何不同? .head(2) 不应该给你 3 个结果,它只给你 2,将它更改为 3,它应该是 3,如问题中所述。此外,它应该是 df.sort_values,而不是 df.sort

标签: python-3.x pandas dataframe pandas-groupby


【解决方案1】:

试试这个:

df.sort_values(['pidx','score'],ascending = False).groupby('pidx').head(3)

这有点类似于您发布的内容,但我修复了一些语法问题。如果结果与您的预期不同,请说明差异。

【讨论】:

  • 它按预期工作。现在我可以看到我做错了什么。谢谢。
猜你喜欢
  • 2022-11-27
  • 1970-01-01
  • 2020-08-14
  • 2016-01-07
  • 2018-04-27
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多