#python #pandas #dataframe #grouping
#python #pandas #фрейм данных #группировка
Вопрос:
На основе этого фрейма данных
df1 Name Age
Johny 15
Diana 35
Doris 97
Peter 25
Antony 55
У меня есть этот фрейм данных с количеством диапазонов, которые я хочу использовать, например
df2 Header Init1 Final1 Init2 Final2 Init3 Final3
Names NaN NaN NaN NaN NaN NaN
Age 0 20 21 50 51 100
То, что я ищу, — это получить такой результат
df3 Name Age
Johny 0-20
Diana 21-50
Doris 51-100
Peter 21-50
Antony 51-100
Я не знаю, возможно ли решение с помощью cut (), но я новичок в python.
Ответ №1:
Используя pd.cut
:
l = df2.iloc[1,1:].tolist()
labels = [str(t[0]) '-' str(t[1]) for t in zip(l[::1],l[1::1])]
df['Age'] = pd.cut(df['Age'], bins=l, labels=labels)
print(df)
Name Age
0 Johny 0-20
1 Diana 21-50
2 Doris 51-100
3 Peter 21-50
4 Antony 51-100
Комментарии:
1. Результат прекрасен, но чего я не хочу, так это записывать значения, которые находятся в 1, я хочу, чтобы вы прочитали их из другого фрейма данных.
2. Есть ли какой-либо способ прочитать имя столбца, а не вашу позицию? потому что я хочу применить его в фрейме данных с большим количеством данных, и там больше нет одинаковых позиций
3. @IriSandivel Да, используя
loc
4. Не могли бы вы привести мне пример? Приношу извинения за неудобства, но я все еще новичок
5. @IriSandivel Проверьте ссылку в моем предыдущем комментарии.