Как нормализовать только один столбец кадра данных, не затрагивая другие? - PullRequest
1 голос
/ 28 марта 2019

Предполагая, что у нас есть df следующим образом:

id A  B
50 1  5
60 2  6
70 3  7
80 4  8

Я хотел бы знать, как можно нормализовать только column B, между 0 и 1, при сохранении других столбцов id и column A совершенно не затронуты?

Редактировать 1: Если я сделаю следующее

import pandas as pd
df = pd.DataFrame({ 'id' : ['50', '60', '70', '80'],
        'A' : ['1', '2', '3', '4'],
        'B' : ['5', '6', '7', '8']
        })

from sklearn import preprocessing
min_max_scaler = preprocessing.MinMaxScaler()
X_minmax = min_max_scaler.fit_transform(df.values[:,[2]])

, я получу X_minmax следующим образом

0
0.333333
0.666667
1

Я хочу, чтобы эти 4 значения были размещены вместо столбца B в кадре данных df без изменения двух других столбцов, как показано ниже:

    id A  B
    50 1  0
    60 2  0.333333
    70 3  0.666667
    80 4  1

Ответы [ 2 ]

2 голосов
/ 28 марта 2019

Вы можете переназначить значение столбца:

df.B = (df.B - df.B.mean()) / (df.B.max() - df.B.min())
1 голос
/ 28 марта 2019

Возможно, вы захотите сделать что-то подобное.

import sklearn.preprocessing as preprocessing
df=pd.DataFrame({'id':[50,60,70,80],'A':[1,2,3,4],'B':[5,6,7,8]})
float_array = df['B'].values.astype(float).reshape(-1,1)
min_max_scaler = preprocessing.MinMaxScaler()
scaled_array = min_max_scaler.fit_transform(float_array)
df['B']=scaled_array

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...