KeyError:“['']不在索引中”,同时使用StandardScaler()规范化多个特定列

2024-10-01 00:21:37 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试使用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列为64

当前DF


Tags: tonormdatasotransformtrain数字整数
1条回答
网友
1楼 · 发布于 2024-10-01 00:21:37

假设您的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

相关问题 更多 >