#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. Спасибо! Это работает как по волшебству!