使用StandardScaler()对pandas数据帧进行归一化,但排除特定列。

4

我有一个数据框,它是通过合并训练(已标记)和测试(未标记)数据框而形成的。为了将测试数据框分离,我保留了一个列,以标识行是否属于训练还是测试。 现在我需要规范化除“ Sl No.”这一列外所有列中的所有值,但我找不到任何方法来跳过这一列。 这是我正在做的事情:

import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler

data_norm = data_x_filled.copy() #Has training + test data frames combined to form single data frame
normalizer = StandardScaler()
data_array = normalizer.fit_transform(data_norm)
data_norm = pd.DataFrame(data_array,columns = data_norm.columns).set_index(data_norm.index)

我只想在规范化时排除“Sl No.”列,但希望在规范化后保留该列。
1个回答

8
尝试这个,它可能有效。使用numpy作为np
data_norm = data_x_filled.copy() #Has training + test data frames combined to form single data frame
normalizer = StandardScaler()
data_array = normalizer.fit_transform(data_norm.ix[:,data_norm.columns!='SI No'])
data_norm = pd.DataFrame(np.column_stack((data_norm['SI No'].values,data_array)),columns = data_norm.columns).set_index(data_norm.index)

这个有效 :) 我用你的解决方案替换了我的,因为我本质上是删除了该列,并在所有处理完成后将其添加回去。 这样更短更优雅。 - Shivendra
@Shivendra 很高兴能帮到你 :)。 - shivsn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接