使用 StandardScaler() 规范化 pandas 数据框,排除特定列

Normalising pandas data frame using StandardScaler() excluding a particular column

所以我有一个数据框,它是通过合并训练(标记的)和测试(未标记的)数据框形成的。为了取消附加测试数据框,如果该行属于训练或测试,我保留了一个具有标识符的列。 现在我必须规范化所有列中的所有值,除了这一列 "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." 进行规范化,但想在规范化后保留它。

试试这个它可能会工作使用 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)