1

I've managed to solve many problems using StackOverflow, but this is the first time I got a question I can't find anywhere else and can't solve on my own...

I'm working in jupyter notebook with a pandas dataframe, containing text reviews and scores for amazon products. Below is my code:

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

This is the result:

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

and slicing the dataframe works fine:

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

However, if I want to select a single row, jupyter throws a Key error on the selected index:

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

Does anyone know what could be causing this problem? I find it very strange that slicing works fine, but selecting a single index throws an error...

As you can see, I tried different methods to select certain rows from the dataframe and they all work fine. I've also tried to reinstall pandas and jupyter notebook, but it still throws the error...

Thanks in advance!

1 Answer 1

1

The indexing operator alone like in reviews[] only works to select rows by boolean expressions - e.g. using a slice like reviews[:2] (your 0 is obsolete) - or to select columns like in reviews['score']. If you want to index by position, you need the .ilog attribute, like in reviews.iloc[0, :], which gives you the first row only, but all the columns.

If you want to learn about pandas indexing, focus on the .loc and .iloc attributes, which both work in 2 dimensions. The indexing operator alone can only be used to select in 1 dimension and with quite some restrictions.

Sign up to request clarification or add additional context in comments.

1 Comment

If everything could be so simple... Thanks for the answer!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.