【问题标题】:ColumnTransformer Passthrough not workingColumnTransformer Passthrough 不起作用
【发布时间】:2021-01-05 08:50:57
【问题描述】:

我想标准化我的 pandas 数据框中的值,并保持一列值相同,所以我使用了ColumnTransformer。但是,该函数似乎没有通过我希望它通过的列。 df 是我的数据框,代码如下:

import pandas as pd
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler

physical_vars = ["DPhill", "DYjj", "mjj", "mll", "mT", "ptTot", "sumOfCentralitiesL", "mL1J1", "mL1J2", "mL2J1", "mL2J2", "ptJ1", "ptJ2", "ptJ3", "METSig"]
other_vars = ["eventNumber", "weight"]
full_var_list =  other_vars + physical_vars

ct = ColumnTransformer([('Standardizer', StandardScaler(), full_var_list)],'passthrough')

col_names=full_var_list
col_names.append("ProcessID")
tmp_df=df[col_names]
standardized_values=ct.fit_transform(tmp_df) #np_array

df=pd.DataFrame(standardized_values,columns=full_var_list)

我想传递“ProcessID”列,但是当我打印出该列时,值是标准化的。

【问题讨论】:

    标签: python pandas dataframe scikit-learn data-science


    【解决方案1】:

    发生这种情况是因为您首先修改了列列表,然后应用了列转换器。你可以检查

    test = ['column1', 'column2']
    col_names = test
    col_names.append('column3')
    test
    

    您可以看到test 还包含“column3”。您应该创建初始列表的副本,然后修改此副本:

    test = ['column1', 'column2']
    col_names = test.copy()
    col_names.append('column3')
    test
    

    现在test 不包含“column3”,ColumnTransformer 将按预期工作。

    【讨论】:

      猜你喜欢
      • 2017-05-09
      • 2020-10-14
      • 1970-01-01
      • 2021-07-29
      • 2020-04-21
      • 2019-08-31
      • 1970-01-01
      • 2021-06-17
      相关资源
      最近更新 更多