6
votes

I get an error when trying to access a single element in a pandas dataframe this way test_df["LABEL"][0]. Here is a code snippet on how I am loading the data:

print "reading test set"
test_set = pd.read_csv(data_path+"small_test_products.txt", header=0, delimiter="|")

print "shape of the test set", test_set.shape 
test_df = pd.DataFrame(test_set)
lengthOfTestSet = len(test_df["LABEL"])
print test_df["LABEL"][0]

Here is the error I am getting:

File "code.py", line 80, in print test_df["LABEL"][0] File "/usr/local/lib/python2.7/dist-packages/pandas/core/series.py", line 521, in getitem result = self.index.get_value(self, key) File "/usr/local/lib/python2.7/dist-packages/pandas/core/index.py", line 3562, in get_value loc = self.get_loc(k) File "/usr/local/lib/python2.7/dist-packages/pandas/core/index.py", line 3619, in get_loc return super(Float64Index, self).get_loc(key, method=method) File "/usr/local/lib/python2.7/dist-packages/pandas/core/index.py", line 1572, in get_loc return self._engine.get_loc(_values_from_object(key)) File "pandas/index.pyx", line 134, in pandas.index.IndexEngine.get_loc (pandas/index.c:3824) File "pandas/index.pyx", line 154, in pandas.index.IndexEngine.get_loc (pandas/index.c:3704) File "pandas/hashtable.pyx", line 541, in pandas.hashtable.Float64HashTable.get_item (pandas/hashtable.c:9914)
File "pandas/hashtable.pyx", line 547, in pandas.hashtable.Float64HashTable.get_item (pandas/hashtable.c:9852) KeyError: 0.0

What am I missing?

1
Sorry what are you attempting here? If you want to access the first row you can do test_df['LABEL'].iloc[0], it's likely that 0 is not in your index, please post the first few rows of your raw input dataEdChum
@EdChum yes that's what I am trying to do. But surprisingly, the indexing train_df["LABEL"][0] worked for me, but didn't work for test_dfMohamed Ali JAMAOUI
BTW, you don't need the test_df = pd.DataFrame(test_set), as read_csv already gives you a DataFramejoris

1 Answers

10
votes

Like EdChum said 0 is probably not in your index.

Try: df.iloc[0] or df['label'].iloc[0], which is integer based location.

To reset the index if you are having trouble with that: df.reset_index(drop=True)

Check out panda's indexing doc for more information on it