【问题标题】:pandas: sorting observations within groupby groupspandas:按组对观察进行排序
【发布时间】:2016-07-04 14:15:26
【问题描述】:

根据pandas groupby sort within groups 的答案,为了对每个组内的观察进行排序,需要对第一个groupby 的结果进行第二次groupby。为什么需要第二个groupby?我会假设在运行第一个 groupby 之后观察结果已经分组,并且所需要的只是枚举这些组的方法(并运行 applyorder)。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    因为在 groupby 之后应用函数后,结果将组合回正常的未分组数据框。使用 groupby 和类似 sort 的 groupby 方法应该被认为是 Split-Apply-Combine operation

    groupby 拆分原始数据帧并将该方法应用于每个组,但随后将结果再次隐式组合。

    在另一个问题中,他们可以反转操作(首先排序),然后不必使用两个 groupby。他们可以这样做:

    df.sort(['job','count'],ascending=False).groupby('job').head(3)
    

    【讨论】:

    • 注意:sort 已弃用 sort_values
    【解决方案2】:

    在这种情况下,他们需要第二个 group by,因为除了排序之外,他们只想保留每个组的前 3 行。

    如果您只需要按组排序,您可以这样做:

    df_res = df.groupby(['job','source']).agg({'count':sum}).sort_values(['job','count'],ascending=False)
    

    一个分组就足够了。

    如果您想为每个组保留最高计数的 3 行,那么您可以再次分组并使用 head() 函数:

    df_res.groupby('job').head(3)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2014-06-22
      • 2021-05-07
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      • 2014-05-08
      相关资源
      最近更新 更多