如何规范化一个数据帧的一列,同时保持其他列不受影响?

2024-03-28 16:19:59 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我们有一个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个值放置在dataframe df中的列B的位置,而不更改其他2列,如下所示:

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

Tags: importid编辑dataframepandasdfascolumn
2条回答

可以重新指定列的值:

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

你可能想这样做。你知道吗

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

相关问题 更多 >