Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the alternative to pandas chain indexing?

I'm taking an online class to learn python and the instructor taught us that chain indexing was not a good idea. However, he failed to tell is the appropriate alternative to use.

Suppose I have a Pandas data frame with rows indexed as ['1', '2', '3'] and columns with names ['a', 'b', 'c'].

What's the appropriate alternative to using the command df['1']['a'] to extract the value found in the first row and first column?

like image 797
RosieMB Avatar asked Dec 21 '16 00:12

RosieMB


1 Answers

Use multi-axis indexing, e.g.

df.loc['a', '1']

When you use df['1']['a'], you are first accessing the series object s = df['1'], and then accessing the series element s['a'], resulting in two __getitem__ calls, both of which are heavily overloaded (handle a lot of scenarios, like slicing, boolean mask indexing, and so on).

It's much more efficient to use the df.loc indexer.

like image 144
Igor Raush Avatar answered Sep 21 '22 10:09

Igor Raush