【问题标题】:sort dataframe by two variables in pandas groupby按 pandas groupby 中的两个变量对数据框进行排序
【发布时间】:2021-01-01 00:21:16
【问题描述】:

我有一个像这样的 DF;

   Group     Name     Rank     Group_Sales_Total
0  A         Dave     4        10
1  A         Tom      2        10
2  A         Sara     1        10
3  A         Raul     3        10
4  B         Chris    3        20
5  B         John     4        20
6  B         Aarti    1        20
7  B         Amen     2        20

我想做的是,按每个组的每个成员各自的排名对他们进行排序,然后按他们各自的销售额对这些组进行排序。我想要的结果应该是这样的。

   Group     Name     Rank     Group_Sales_Total
0  B         Aarti    1        20
1  B         Amen     2        20
2  B         Chris    3        20
3  B         John     4        20
4  A         Sara     1        10
5  A         Tom      2        10
6  A         Raul     3        10
7  A         Dave     4        10

我能够正确地为每个组排序排序;

DF.groupby('Group').apply(pd.DataFrame.sort_values, 'Rank', ascending=True).reset_index(drop=True)

但是,当我也尝试按集团销售总额对其进行排序时,排序要么不会发生,要么会打乱排名的顺序。我尝试了以下方法;

DF.groupby('Group').apply(pd.DataFrame.sort_values, ['Rank','Group_Sales_Total'], ascending=[True, False]).reset_index(drop=True)

任何有关获得输出的帮助/见解将不胜感激。

亲切的问候

【问题讨论】:

  • @wwnde no... 我没有接受您的回答并在 cmets 中发布(根据您删除的评论)。我在您输入的同时或之前输入了它
  • 没问题@wwnde,我已经删除了该评论,因为它似乎是在您回答后 1 分钟 :)

标签: pandas


【解决方案1】:
 df.sort_values(['Group','Rank','Group_Sales_Total'], ascending=[False, True, False])



 Group   Name  Rank  Group_Sales_Total
6     B  Aarti     1                 20
7     B   Amen     2                 20
4     B  Chris     3                 20
5     B   John     4                 20
2     A   Sara     1                 10
1     A    Tom     2                 10
3     A   Raul     3                 10
0     A   Dave     4                 10

【讨论】:

    猜你喜欢
    • 2023-01-26
    • 2019-06-27
    • 2017-12-26
    • 2015-09-16
    • 1970-01-01
    • 2013-06-05
    • 2020-04-20
    • 1970-01-01
    • 2021-06-25
    相关资源
    最近更新 更多