Multiple indexing a combo box data frame

I have a multi-indexed dataframe along the lines:

id  iso
0   AR    1.0203
    BO    1.2303
    CN    1.2402
    NL    1.1202
    SC    1.4552
1   AR    1.2004
    BO    2.3030
    CN    1.2039
    NL    1.6043
    SC    1.3949


From this Dataframe I would like to get all the scores for 'id' = 0 for a list of isocodes, for example: ['AR','CN','SC']

By passing in a list of tuples, I manage to get these estimates, for example:



leads to:

id  iso
0   AR    1.0203
    CN    1.2402
    SC    1.4552


I am currently building a list of tuples before passing it in with ix. Reading I get the feeling that there is a more efficient way to do this than passing in a list of tuples, but I cannot wrap my head is around how to approach it. How to build multi-index slicers in this case?


source to share

1 answer

you can use multiindexing using slicers

>>> idx = pd.IndexSlice
>>> df.loc[idx[0, ['AR','CN','SC']],:]
id iso       
0  AR   1.020
   CN   1.240
   SC   1.455


or even simpler:

>>> df.loc[(0, ['AR','CN','SC']),:]


or alternatively:

>>> i = df.index.get_level_values(1).isin(['AR','CN','SC'])
>>> j = df.index.get_level_values(0) == 0
>>> df.loc[i & j]




All Articles