jello195
jello195

Reputation: 103

Pandas dataframe add headers above the headers

I'm trying to add another line of headers above the headers in a pandas dataframe.

Turning this :

import pandas as pd

df = pd.DataFrame(data={'A': range(5), 'B': range(5), 'C':range(5)})
print(df)
   A  B  C
0  0  0  0
1  1  1  1
2  2  2  2
3  3  3  3
4  4  4  4

into this (for instance):

   D     E
   A  B  C
0  0  0  0
1  1  1  1
2  2  2  2
3  3  3  3
4  4  4  4

Having both A and B under D and C under E. This doesn't seem like something that would be hard with pandas but yet I can't seem to find the answer. How do you do this?

Upvotes: 1

Views: 246

Answers (1)

sammywemmy
sammywemmy

Reputation: 28644

With some help from @Nk03, you can create a mapping of existing column labels to D and E, then create a MultiIndex :

map_dict = {'A': 'D', 'B': 'D' ,'C':'E'}
df.columns = pd.MultiIndex.from_tuples(zip(df.columns.map(map_dict), df.columns))

   D     E
   A  B  C
0  0  0  0
1  1  1  1
2  2  2  2
3  3  3  3
4  4  4  4

Upvotes: 1

Related Questions