代码之家  ›  专栏  ›  技术社区  ›  Salvador Dali

提取每个用户的最后一个problem_id

  •  0
  • Salvador Dali  · 技术社区  · 8 年前

    我有一个包含以下列的数据帧: ['user_id', 'problem_id', 'timestamp'] 基本上是谁在什么时候解决了问题。显然,有些用户解决了许多问题。

    我想提取每个用户解决的最后一个问题。我的第一种方法是按user_id分组并获得最大值: df_s.groupby('user_id').max()[['problem_id']] ,但仔细查看之后,我意识到它只会返回用户所解决的最高词典排序问题。

    很明显,我还可以对groupby聚合进行迭代,对数据帧进行排序,并解决第一个问题,但我希望有一个简单的语句。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Jon Clements    8 年前

    如果您的 timestamp 自然排序-即最新值是最后一个,然后:

    df_s.sort_values('timestamp').groupby('user_id').last()
    

    应该给你想要的 groupby 保留其输入的顺序以进行分组。。。