babavyna
babavyna

Reputation: 79

Pandas split ages by group

I'm quite new with pandas and need a bit help. I have a column with ages and need to make groups of these: Young people: age≤30 Middle-aged people: 30<age≤60 Old people:60<age Here is the code, but it gives me an error:

def get_num_people_by_age_category(dataframe):
    young, middle_aged, old = (0, 0, 0)
    dataframe["age"] = pd.cut(x=dataframe['age'], bins=[30,31,60,61], labels=["young","middle_aged","old"])
    return young, middle_aged, old
ages = get_num_people_by_age_category(dataframe) 
print(dataframe)

Upvotes: 4

Views: 5783

Answers (1)

Nilesh Ingle
Nilesh Ingle

Reputation: 1883

Code below gets the age groups using pd.cut().

# Import libraries
import pandas as pd

# Create DataFrame
df = pd.DataFrame({
    'age': [1,20,30,31,50,60,61,80,90] #np.random.randint(1,100,50)
})

# Function: Copy-pasted from question and modified
def get_num_people_by_age_category(df):
    df["age_group"] = pd.cut(x=df['age'], bins=[0,30,60,100], labels=["young","middle_aged","old"])
    return df

# Call function
df = get_num_people_by_age_category(df)

Output

print(df)

   age    age_group
0    1        young
1   20        young
2   30        young
3   31  middle_aged
4   50  middle_aged
5   60  middle_aged
6   61          old
7   80          old
8   90          old

Upvotes: 8

Related Questions