Не могу присвоить значение выхода StandardScaler() к новым колонкам дата фрейма
В modify_data этих колонок не существует, во второй строчке я их создаю и присваивая
scaler = StandardScaler()
modify_data[[num_cols]] = scaler.fit_transform(data[num_cols])
Ошибка:
KeyError: "None of [Index(['ClientPeriod', 'MonthlySpending',
'TotalSpent'], dtype='object')] are in the [columns]"
Для теста:
import pandas as pd
from sklearn.preprocessing import StandardScaler
url='https://drive.google.com/file/d/1K-tf97Hjklw_eHFxeup36bBpElSC1hrb/view?usp=sharing'
url='https://drive.google.com/uc?id=' + url.split('/')[-2]
data = pd.read_csv(url)
num_cols = [
'ClientPeriod',
'MonthlySpending',
'TotalSpent'
]
#Убираю пустые строки в TotalSpent
data.TotalSpent = data.TotalSpent.apply(lambda x: float(x) if x.split() else 0)
modify_data = pd.DataFrame()
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
modify_data[[num_cols]] = scaler.fit_transform(data[num_cols])
^^^^^^^^^^^^
Я проверил на ваших данных, очевидно у вас просто одни квадратные скобки лишние, num_cols - это и так уже список колонок, не нужно его дополнительно помещать в список. Правильно так:
modify_data[num_cols] = scaler.fit_transform(data[num_cols])
У меня при этом в Google Colab выходила другая ошибка на вашем коде:
ValueError: Columns must be same length as key
Вероятно, у вас другая версия Pandas, либо код был не совсем такой, как вы показали для воспроизведения ошибки. Но суть проблемы и решения от этого не меняется.