【问题标题】:Normalising pandas data frame using StandardScaler() excluding a particular column使用 StandardScaler() 规范化 pandas 数据帧,不包括特定列
【发布时间】:2017-01-07 20:54:15
【问题描述】:

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

【问题讨论】:

    标签: python pandas scikit-learn normalization


    【解决方案1】:

    试试这个它可能会使用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 很高兴可以帮助你:)。
    猜你喜欢
    • 2019-03-15
    • 2018-11-16
    • 1970-01-01
    • 2020-05-31
    • 2019-12-14
    • 2021-05-25
    • 2020-12-15
    • 2018-12-24
    • 2020-10-19
    相关资源
    最近更新 更多