Home > Software design >  Get a multiple-index column values
Get a multiple-index column values

Time:04-09

Let's assume we have a DataFrame df with N rows:

| multiple-index |  | ordinary columns |
I_A, I_B, I_C, I_D,  C_A, C_B, C_C, C_D

How can we extract all N values for I_B index column? df.index gives us all combinations of I_A...I_D but it is not what we need. Of course, we can iterate over it but it will cost productivity, there must be an easier, more straightforward way?

Thank you for your time.

UPDATE

E.g., we have df generated by:

data = {
    "animal": ["cat", "dog", "parrot", "hamster"],
    "size":   ["big", "big", "small", "small"],
    "feet":   [4, 4, 2, 4]
}

multi = pd.DataFrame(data)

multi.set_index(["size", "feet"], inplace = True)

and which is:

              animal
 size feet |
  big    4 |     cat
  big    4 |     dog
small    2 |  parrot
small    4 | hamster

Its index is:

MultiIndex([(  'big', 4),
            (  'big', 4),
            ('small', 2),
            ('small', 4)],
           names=['size', 'feet'])

from which we would like to get all sizes:

['big', 'big', 'small', 'small']

How can we do that?

CodePudding user response:

I think you're looking for MultiIndex.get_level_values:

multi.index.get_level_values('size')

Output: Index(['big', 'big', 'small', 'small'], dtype='object', name='size')

Or as list:

multi.index.get_level_values('size').to_list()

Output: ['big', 'big', 'small', 'small']

  • Related