Группировать по определенной возрастной группе в Pandas

#python #pandas #jupyter-notebook

#python #pandas #jupyter-ноутбук

Вопрос:

У меня есть столбец значений возраста, которые мне нужно сгруппировать по столбцам.

Например, в этом фрейме данных у меня есть:

возраст

и хотел бы добраться до:

введите описание изображения здесь

Я сделал это, чтобы попытаться отфильтровать его и получить данные, но он ничего не возвращает.

 data_df = df[df['Age'] <= 30]
data_df
 

и это работает некорректно, и я получил сообщение об ошибке.

Ошибка значения: невозможно переиндексировать из повторяющейся оси

Ответ №1:

Сначала преобразуйте значения столбца в числовые, удаляя , затем объединяя по cut и, наконец, создавая индикаторы get_dummies с помощью добавления к оригиналу DataFrame :

 df['Age'] = df['Age'].astype(str).str.strip(' ').astype(int)

df  = df.join(pd.get_dummies(pd.cut(df['Age'],
                           bins=(0,18,25,29,50,np.inf), 
                           labels=['Under 18','19_to_25','26_to_29','30_to_50','Over 50'])))
print (df)
    Age  Under 18  19_to_25  26_to_29  30_to_50  Over 50
0    12         1         0         0         0        0
1    13         1         0         0         0        0
2    14         1         0         0         0        0
3    18         1         0         0         0        0
4    20         0         1         0         0        0
5    25         0         1         0         0        0
6    30         0         0         0         1        0
7    40         0         0         0         1        0
8    50         0         0         0         1        0
9    60         0         0         0         0        1
10   70         0         0         0         0        1
 

Комментарии:

1. Спасибо! Это работает как по волшебству!