【问题标题】:Pandas: Group by two parameters and sort by third parameterPandas:按两个参数分组并按第三个参数排序
【发布时间】:2020-02-17 18:28:57
【问题描述】:

我想按两列(名称和预算)对我的数据框进行分组,然后按第三个参数(Prio)对聚合结果进行排序。

Name     Budget    Prio    Quantity
peter    A         2       12
         B         1       123
joe      A         3       34
         B         1       51
         C         2       43

我已经检查了这个post,它非常有帮助并导致以下输出。但是,我无法通过第三个参数 (Prio) 管理排序。

df_agg = df.groupby(['Name','Budget','Prio']).agg({'Quantity':sum})

g = df_agg['Quantity'].groupby(level=0, group_keys=False)

res = g.apply(lambda x: x.sort_values(ascending=True))

我现在想在每个组中按升序对 prio 进行排序。得到类似的东西:

Name     Budget    Prio    Quantity
peter    B         1       123
         A         2       12
joe      B         1       51
         C         2       34
         A         3       43

【问题讨论】:

    标签: python pandas sorting


    【解决方案1】:

    如果你只想按Prio排序,你可以使用sort_index

    (df.groupby(['Name','Budget','Prio'])
       .agg({'Quantity':'sum'})
       .sort_index(level=['Name', 'Prio'],
                    ascending=[False, True])
    )
    

    输出:

                       Quantity
    Name  Budget Prio          
    peter B      1          123
          A      2           12
    joe   B      1           51
          C      2           43
          A      3           34
    

    【讨论】:

      【解决方案2】:

      IIUC,

      df.groupby(['Name','Budget','Prio']).agg({'Quantity':sum}).sort_values(['Name','Prio'])
      

      输出:

                         Quantity
      Name  Budget Prio          
      joe   B      1           51
            C      2            4
            A      3           34
      peter B      1          123
            A      2           12
      

      【讨论】:

      • 谢谢,这真的很有帮助!完成后,有没有办法遍历行并访问特定值?
      • @maxiw46 是的,您可以使用元组访问特定值。 df_out.loc[('joe','A',3), 'Quantity'] 返回 34。
      猜你喜欢
      • 2019-01-13
      • 1970-01-01
      • 2022-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 1970-01-01
      • 2018-11-29
      相关资源
      最近更新 更多