Mohamed Afiq
Mohamed Afiq

Reputation: 59

Pandas sort by subtotal of each group

Still new into pandas but is there a way to sort df by subtotal of each group.

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

So I want to sort them by subtotal of each Area which results to A subtotal = 7, B subtotal=14, C subtotal = 10 The sort should be like

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

*Note that despite the value of B3 > B1 it should not be affected by the sort.

Upvotes: 0

Views: 393

Answers (1)

sammywemmy
sammywemmy

Reputation: 28644

create a helper column 'sorter', which is the sum of the count variable, and sort ur dataframe with it

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

Upvotes: 1

Related Questions