#python #pandas #scaling
#питон #панды #пересчет
Вопрос:
У меня есть фрейм данных панд:
from sklearn.preprocessing import MinMaxScaler data = pd.DataFrame({'x': [1,2,3,4,5], 'name': ['jo', 'ellen','jo', 'ellen' ,'jo' ]} ) min_max_scaler = MinMaxScaler() data['scaled_x'] = dataframe.groupby('name')['x'].transform(lambda x: min_max_scaler.fit_transform(x))
Я не могу заставить его работать.. как мне масштабировать по имени?
Ответ №1:
Многие функции sklearn ожидают 2D-ввода, даже если это только 1D-данные. Вам нужно преобразовать вашу серию в фрейм данных с to_frame
помощью . Затем вам нужно преобразовать выходные данные обратно в 1D с помощью ravel
:
data['scaled_x'] = data.groupby('name')['x'].transform(lambda c: min_max_scaler.fit_transform(c.to_frame()).ravel())
выход:
x name scaled_x 0 1 jo 0.0 1 2 ellen 0.0 2 3 jo 0.5 3 4 ellen 1.0 4 5 jo 1.0