KeyError: "[''] not in index" while normalizing multiple specific columns, using StandardScaler()
KeyError: "[''] not in index" while normalizing multiple specific columns, using StandardScaler()
尝试仅规范化特定的数字列,使用 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。
当前方向
假设您的 train_data
确实有索引 A
(如果没有,则无论如何都无法使用)。
您没有正确使用这些索引。如果你想 select 多列,你需要使用双括号语法(否则你的列名列表将被视为单独的参数)
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
尝试仅规范化特定的数字列,使用 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。
当前方向
假设您的 train_data
确实有索引 A
(如果没有,则无论如何都无法使用)。
您没有正确使用这些索引。如果你想 select 多列,你需要使用双括号语法(否则你的列名列表将被视为单独的参数)
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