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.