Home > Back-end >  Grouping rows and adding average of group values to Dataframe
Grouping rows and adding average of group values to Dataframe

Time:03-10

I have a dataframe where I need to create a grouping of ages and then have the averages amount of Tip amount for each group.

My Data looks the following

Tip amount Age
3 30
30 35
4 60
1 12
7 25
3 45
15 31
5 8

I have tried to use pd.cut() with bins to create the grouping, but I can't seem to get the Tip amount average (maybe using mean()) to be in the DataFrame as well.

import pandas as pd

bins= [0,15,30,45,60,85]
labels = ['0-14','15-29','30-44','45-59','60 ']

df['Tip amount']=df['Tip amount'].astype(int)
#df = df.groupby('Age')[['Tip amount']].mean()
df = df.groupby(pd.cut(df['Age'], bins=bins, labels=labels, right=False)).size()

This gives the following output:

Age
0-14 2
15-29 1
30-44 3
45-59 1
60 1

But I would like to have the average Tip amount for the groups as well.

Age Tip amount
0-14 2 avg
15-29 1 avg
30-44 3 avg
45-59 1 avg
60 1 avg

CodePudding user response:

Try:

df.groupby(pd.cut(df['Age'], bins=bins, labels=labels, right=False)).agg({'Age': ['size'], 'Tip amount': ['mean']})
  • Related