Python Ошибка ключа при выборе одной строки из pandas кадра данных в блокноте jupyter - PullRequest
0 голосов
/ 31 марта 2020

Мне удалось решить многие проблемы с помощью StackOverflow, но впервые у меня возникает вопрос, который я не могу найти где-либо еще и не могу решить самостоятельно ...

I ' Я работаю в ноутбуке Jupyter с pandas данным, содержащим текстовые обзоры и оценки продуктов Amazon. Ниже мой код:

import pandas as pd
data = pd.read_csv("AmazonSampleForStudentOffice.csv")
reviews = data[['reviewText', 'score', 'len_text']]
reviews.head(5)

Это результат:

reviewText  score   len_text
0   Wow! Do I consider myself lucky! I got this CX...   5   274
1   The Optima 45 Electric Stapler has a sleek mod...   5   108
2   This tape does just what it's supposed to.And ...   5   18
3   It is rare that I look for a more expensive pr...   5   104
4   I know of no printer that makes such great pri...   5   34

, и нарезка кадра данных работает нормально:

reviews[0:2]


reviewText  score   len_text
0   Wow! Do I consider myself lucky! I got this CX...   5   274
1   The Optima 45 Electric Stapler has a sleek mod...   5   108

Однако, если я хочу Если выбрать одну строку, jupyter выдает ошибку Key в выбранном индексе:

reviews[0]

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
c:\users\robin\appdata\local\programs\python\python38-32\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   2896             try:
-> 2897                 return self._engine.get_loc(key)
   2898             except KeyError:

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

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

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 0

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-7-a635d1333a53> in <module>
----> 1 reviews[0]

c:\users\robin\appdata\local\programs\python\python38-32\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
   2993             if self.columns.nlevels > 1:
   2994                 return self._getitem_multilevel(key)
-> 2995             indexer = self.columns.get_loc(key)
   2996             if is_integer(indexer):
   2997                 indexer = [indexer]

c:\users\robin\appdata\local\programs\python\python38-32\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   2897                 return self._engine.get_loc(key)
   2898             except KeyError:
-> 2899                 return self._engine.get_loc(self._maybe_cast_indexer(key))
   2900         indexer = self.get_indexer([key], method=method, tolerance=tolerance)
   2901         if indexer.ndim > 1 or indexer.size > 1:

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

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

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 0

Кто-нибудь знает, что может быть причиной этой проблемы? Я нахожу очень странным, что нарезка работает нормально, но выбор одного индекса приводит к ошибке ...

Как видите, я пробовал разные методы для выбора определенных строк в кадре данных, и все они работают нормально. Я также пытался переустановить pandas и ноутбук jupyter, но все равно выдает ошибку ...

Заранее спасибо!

1 Ответ

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

Один оператор индексирования, как в reviews[], работает только для выбора строк с помощью логических выражений - например, с использованием среза, например reviews[:2] (ваш 0 устарел) - или для выбора столбцов, как в reviews['score']. Если вы хотите индексировать по позиции, вам нужен атрибут .ilog, как в reviews.iloc[0, :], который дает вам только первую строку, но все столбцы.

Если вы хотите узнать об индексировании pandas Сфокусируйтесь на атрибутах .lo c и .ilo c, которые работают в двух измерениях. Один оператор индексирования может использоваться только для выбора в 1 измерении с некоторыми ограничениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...