How to Rename Multiple Columns on a Reset Index with Pandas
reset_index
is not smart enough to do this, but we could leverage methods rename_axis
and rename
to give names to the index and columns/series before resetting the index; once the names are set up properly, reset_index will automatically convert these names to the column names in the result:
Here rename_axis
gives names to index which is somewhat equivalent to df.index.names = ...
except in a functional style; rename
gives name to the Series object:
df1.set_index(['B','A']).stack().rename_axis(['B','A','col2']).rename('col').reset_index()
# B A col2 col
#0 b1 a1 D1 1
#1 b1 a1 D2 0
#2 b1 a1 D3 0
#3 b2 a1 D1 0
#4 b2 a1 D2 1
# ..