如何仅对数据框的一列进行规格化,同时使其他列不受影响?

时间:2019-03-28 19:31:38

标签: python python-3.x pandas numpy

假设我们有一个df,如下所示:

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

我想知道如何仅对0和1之间的column B进行规范化,同时保持其他列idcolumn 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的位置,而无需更改其他2列,如下所示:

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

2 个答案:

答案 0 :(得分:2)

您可以重新分配列的值:

df.B = (df.B - df.B.mean()) / (df.B.max() - df.B.min())

答案 1 :(得分:2)

您可能想做这样的事情。

let stringNumberOne = "2.3"; // typeof(stringNumberOne) => "string"
let stringNumberTwo = "3.3"; // typeof(stringNumberTwo) => "string"
let stringAddition = stringNumberOne + stringNumberTwo; // Result: "2.33.3"

let convertedStringNumberOne = Number(stringNumberOne); // typeof(convertedStringNumberOne) => "number"
let convertedStringNumberTwo = Number(stringNumberTwo); // typeof(convertedStringNumberTwo) => "number"
let convertedStringAddition = convertedStringNumberOne + convertedStringNumberTwo; // Result: 5.6