10

I have a simple task that I'm wondering if there is a better / more efficient way to do. I have a dataframe that looks like this:

  Group  Score  Count
0     A      5    100
1     A      1     50
2     A      3      5
3     B      1     40
4     B      2     20
5     B      1     60

And I want to add a column that holds the value of the group total count:

  Group  Score  Count  TotalCount
0     A      5    100         155
1     A      1     50         155
2     A      3      5         155
3     B      1     40         120
4     B      2     20         120
5     B      1     60         120

The way I did this was:

Grouped=df.groupby('Group')['Count'].sum().reset_index()
Grouped=Grouped.rename(columns={'Count':'TotalCount'})

df=pd.merge(df, Grouped, on='Group', how='left')

Is there a better / cleaner way to add these values directly to the dataframe?

Thanks for the help.

jpp
  • 159,742
  • 34
  • 281
  • 339
AJG519
  • 3,249
  • 10
  • 36
  • 62

1 Answers1

20
df['TotalCount'] = df.groupby('Group')['Count'].transform('sum')

Some other options are discussed here.

jpp
  • 159,742
  • 34
  • 281
  • 339
abeboparebop
  • 7,396
  • 6
  • 37
  • 46