使用StandartScaler()
检查了几个SO问题,但未能解决。
所有列都是浮点数或整数
cols_to_norm = ['A','B','C']
train_data[cols_to_norm] = StandardScaler().fit_transform(train_data[cols_to_norm])
KeyError: "['A'] not in index"
列A为float64。
当前DF
答案 0 :(得分:1)
假设您的train_data
确实有索引A
(如果没有,那么它将无法正常工作)。
您使用的索引不正确。如果要选择多个列,则需要使用双括号语法(否则,列名称列表将被视为单独的参数)
train_data[[cols_to_norm]]
这是一个简单的例子。
data.csv
a,b,c
1,1,0
2,3,4
1,0,0
app.py
import pandas as pd
from sklearn.preprocessing import StandardScaler
df = pd.read_csv("./data.csv")
print(df.values)
# [[1 1 0]
# [2 3 4]
# [1 0 0]]
scaler = StandardScaler()
df[['a', 'b']] = scaler.fit_transform(df[['a', 'b']])
print(df)
# a b c
# 0 -0.707107 -0.267261 0
# 1 1.414214 1.336306 4
# 2 -0.707107 -1.069045 0