Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用不包括特定列的StandardScaler()规范化数据帧_Python_Pandas_Scikit Learn_Normalization - Fatal编程技术网

Python 使用不包括特定列的StandardScaler()规范化数据帧

Python 使用不包括特定列的StandardScaler()规范化数据帧,python,pandas,scikit-learn,normalization,Python,Pandas,Scikit Learn,Normalization,所以我有一个数据帧,我通过合并有标签的训练和测试无标签的数据帧形成。为了取消附加测试数据帧,我保留了一列,如果该行属于训练或测试,则该列具有标识符。 现在我必须规范化所有列中的所有值,除了这一列Sl号。但是我没有找到任何方法来传递这一列。 这就是我所做的 import pandas as pd import numpy as np from sklearn.preprocessing import StandardScaler data_norm = data_x_filled.copy()

所以我有一个数据帧,我通过合并有标签的训练和测试无标签的数据帧形成。为了取消附加测试数据帧,我保留了一列,如果该行属于训练或测试,则该列具有标识符。 现在我必须规范化所有列中的所有值,除了这一列Sl号。但是我没有找到任何方法来传递这一列。 这就是我所做的

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编号,但希望在规范化后保留该列。

尝试此操作可能会奏效,使用numpy作为np:


这起作用了:。我用你的解决方案替换了我的解决方案,因为我实际上是在删除列,然后在所有的处理过程之后将其添加回来。这是更短更优雅的。@Shivendra很高兴能帮助您:。
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)