#python #pandas #normalize #rescale
Вопрос:
У меня есть фрейм данных:
df1
col1 col2 col_base
0 1142 177 596821046
1 24 22 552973776
2 105 6 593632325
3 50 18 47238004
Я хочу нормализовать col_base до диапазона <0,1> и автоматически масштабировать оставшиеся столбцы.
Проблема в том, что я знаю, что могу установить какой-нибудь MinMaxScaler или какой-нибудь sklearn.нормализатор предварительной обработки, но я не хочу вручную разделять col1, col2, но я ищу какой-то автоматический способ, чтобы вывод был:
col1_rs col2_rs col_base_norm
0 1142.000000 177.000000 1.000000
1 26.080799 23.907399 0.920217
2 105.612773 6.035016 0.994198
3 NaN NaN 0.000000
Это мой текущий код:
a,b = 0,1
x, y = df1.col_base.min(), df1.col_base.max()
df1['col_base_norm'] = (df1.col_base - x) / (y - x) * (b - a) a
df1['col1_rs'] = df1['col1'] / df1['col_base_norm']
df1['col2_rs'] = df1['col2'] / df1['col_base_norm']
df1 = df1.replace([np.inf, -np.inf], np.nan, inplace=False)
df1[['col1_rs', 'col2_rs', 'col_base_norm']]