使用除特定列之外的StandardScaler()来规范化pandas数据帧

时间:2016-08-31 10:08:46

标签: python pandas scikit-learn normalization

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

答案 0 :(得分:7)

尝试此操作可以使用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)