jincept
jincept

Reputation: 279

Pandas Keyerror

I have a very simple code:

stats2 = {'a':[1,2,3,4,5,6],
         'b':[43,34,65,56,29,76],
         'c':[65,67,78,65,45,52],
         'cac':['mns','ab','cd','cd','ab','k']}
f2 = pd.DataFrame(stats2)
f2.set_index(['cac'], inplace = True)
print(f2.ix['mns'])
print(f2['mns'])

f2.ix['mns'] works just fine. However, f2['mns'] reports KeyError. I am trying to understand why it does that. Is that how pandas work? Do I have to use ix even though I have set the index before?

Upvotes: 2

Views: 10668

Answers (1)

Nickil Maveli
Nickil Maveli

Reputation: 29711

This is your original dataframe:

>>> df

   a   b   c  cac
0  1  43  65  mns
1  2  34  67   ab
2  3  65  78   cd
3  4  56  65   cd
4  5  29  45   ab
5  6  76  52    k


>>> df.set_index(['cac'], inplace=True)
>>> df

     a   b   c
cac           
mns  1  43  65
ab   2  34  67
cd   3  65  78
cd   4  56  65
ab   5  29  45
k    6  76  52

So, setting the index in pandas is simply replacing the before counter values(0,1,2,...,5) to the new row values i.e (mns, ab,...,k) of cac column name.

>>> df.ix['mns']

a     1
b    43
c    65

This command specifically searches for row in the index column, cac whose value is equal to mns and retrieves it's corresponding elements.

Note: As mns is not a column name of the dataframe, df['mns'] throws a key error.

Upvotes: 4

Related Questions