Я получаю сообщение об ошибке при подмножестве вектора из индекса, который не начинается с 0. В моем коде я хочу разделить на наборы для обучения и тестирования. Итак, я подгруппировал первые 158 элементов для набора поездов и последние 78 элементов для набора тестов. Но тестовый набор отказывается работать и выдает ключевую ошибку. Я упустил что-то очевидное или что-то не так с данными, которые я загрузил из Интернета в рамках задания?

print(x.shape)

Вне

(236L,)

Он отлично работает, чтобы перебирать каждый элемент:

for i in range(0,236):
    x[i]

Шлейф работает нормально:

xtr=x[0:158]
for i in range(0,158):
    xtr[i]

Я не могу подмножество индекса, который не начинается с 0, что дает мне ключевую ошибку! Возможно, что-то не так с моим синтаксисом?

xts=x[158:]
xts[0]
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-46-721cd700687d> in <module>()
     13     xtr[i]
     14 xts=x[158:]
---> 15 xts[0]

c:\python27\lib\site-packages\pandas\core\series.pyc in __getitem__(self, key)
    866         key = com.apply_if_callable(key, self)
    867         try:
--> 868             result = self.index.get_value(self, key)
    869 
    870             if not is_scalar(result):

c:\python27\lib\site-packages\pandas\core\indexes\base.pyc in get_value(self, series, key)
   4373         try:
   4374             return self._engine.get_value(s, k,
-> 4375                                           tz=getattr(series.dtype, 'tz', None))
   4376         except KeyError as e1:
   4377             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\hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()

KeyError: 0L

0
Jellyfish 12 Фев 2021 в 02:45

1 ответ

Лучший ответ

Здесь вы работаете с серией pandas, а не со списком Python, поэтому он работает не так, как вы ожидаете. xts[0] пытается найти значение 0 в индексе вашего набора для тестирования, но этот индекс, кажется, начинается с 158, поэтому он вызывает KeyError.

Вы можете преобразовать свою серию панд в список Python, используя x = list(x).

Если вы хотите продолжать использовать серию pandas, вы можете получить доступ к первому элементу серии с помощью xts.iloc[0].

1
LucasG0 12 Фев 2021 в 00:46