首页 > 解决方案 > 熊猫按每组的小计排序

问题描述

pandas 还是新手,但有没有办法按每组的小计对 df 进行排序。

 Area   Unit   Count
  A     A1      5
  A     A2      2
  B     B1      10
  B     B2      1 
  B     B3      3
  C     C1      10

所以我想按每个Area结果的小计对它们进行A subtotal = 7, B subtotal=14, C subtotal = 10 排序排序应该像

 Area   Unit   Count
  B     B1      10
  B     B2      1 
  B     B3      3
  C     C1      10
  A     A1      5
  A     A2      2

*请注意,尽管B3 > B1它的值不应受到排序的影响。

标签: pythonpandasdataframesorting

解决方案


创建一个辅助列'sorter',它是count变量的总和,并用它对你的数据框进行排序

df['sorter'] = df.groupby("Area").Count.transform('sum')

df.sort_values('sorter',ascending=False).reset_index(drop=True).drop('sorter',axis=1)


  Area  Unit    Count
0   B   B1       10
1   B   B2      1
2   B   B3      3
3   C   C1      10
4   A   A1      5
5   A   A2      2

推荐阅读