ошибка, связанная с изменением типа данных в jupyter - PullRequest
0 голосов
/ 12 марта 2020

У меня есть датафрейм, который содержит строку вместо значений nan, и всякий раз, когда я пытаюсь удалить строки, содержащие его, он выдает ошибку с меткой:

KeyError: 'SALE PRICE'

, где "SALE PRICE" - это столбец, содержащий эти значения, я пытаюсь создать дерево решений для данных, пожалуйста, помогите Код:

y = df["SALE PRICE"]
print(y.dtypes)
y = y[y['SALE PRICE'] != ' -  ']
y[['SALE PRICE']] = y[['SALE PRICE']].apply(pd.to_numeric)
y = y.dropna()

ошибка:

 <ipython-input-60-433cf81cd3fd> in <module>
      1 y = df["SALE PRICE"]
      2 print(y.dtypes)
----> 3 y = y[y['SALE PRICE'] != ' -  ']
      4 y[['SALE PRICE']] = y[['SALE PRICE']].apply(pd.to_numeric)
      5 y = y.dropna()

~\Anaconda3\lib\site-packages\pandas\core\series.py in __getitem__(self, key)
   1066         key = com.apply_if_callable(key, self)
   1067         try:
-> 1068             result = self.index.get_value(self, key)
   1069 
   1070             if not is_scalar(result):

~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_value(self, series, key)
   4728         k = self._convert_scalar_indexer(k, kind="getitem")
   4729         try:
-> 4730             return self._engine.get_value(s, k, tz=getattr(series.dtype, "tz", None))
   4731         except KeyError as e1:
   4732             if len(self) > 0 and (self.holds_integer() or self.is_boolean()):

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_value()

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_value()

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\index_class_helper.pxi in pandas._libs.index.Int64Engine._check_type()

KeyError: 'SALE PRICE'

1 Ответ

0 голосов
/ 19 марта 2020

Подход, который вы пытаетесь использовать, не сработает, я объясню, что делает ваш код:

y = df["SALE PRICE"]

В этой строке используется выбор столбца "SALE PRICE" из вашего фрейма данных, который называется df и устанавливает его в переменную y. Обратите внимание, что возвращаемый объект является pd.Series объектом, который не имеет столбцов. Вы можете проверить типы объектов, запустив type(df), а также type(y).

Когда вы запустите:

y = y[y['SALE PRICE'] != ' -  ']

Ваш код просматривает индекс ряда, сохраненного в переменной y (это, вероятно, диапазон от 0 до количества имеющихся у вас строк) для строки "SALE PRICE", которая не существует. Вы можете проверить индекс y с помощью y.index.

. Вы можете либо заменить y на df, либо, если вы хотите сохранить имя столбца для использования в других местах, где вы Вам нужно будет просто сохранить строку в переменной, что-то вроде:

y = "SALE PRICE" #
print(df[y]) # Identical to running df["SALE PRICE"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...