0

What I want to do can perfectly be done in this way:

df.reset_index('level_x', inplace=True, drop=False)
df.rename(columns={'level_x': 'level_y', inplace=True)
df.set_index('level_y', append=True)

but I am very sure there is a one liner (and better) approach. Something like

df.rename(level={'level_x': 'level_y'}, inplace=True)

which of course does not work (I tried several others as well such as .rename(index=...), .rename(...), etc.). Surprisingly neither Google nor ChatGPT are telling me how to do this trivial operation...

Consider for example df = pandas.DataFrame({'level_x':[1,2,3], 'asd':[2,3,4], 'a column':[3,4,5]}).set_index(['level_x','asd']).

user171780
  • 2,243
  • 1
  • 20
  • 43

1 Answers1

1

You can use Index.rename:

df.index.rename({'level_x': 'level_y'}, inplace=True)

Or:

df.index = df.index.rename({'level_x': 'level_y'})

Example:

print(df)
                 A
level_w level_x   
1       A        X
2       B        X
3       B        X

df.index = df.index.rename({'level_x': 'level_y'})
print(df)
                 A
level_w level_y   
1       A        X
2       B        X
3       B        X
mozway
  • 194,879
  • 13
  • 39
  • 75