Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pandas: combining header rows of a multiIndex DataFrame

Lets say I have a DataFrame as follows:

first   bar       baz       foo
second  one  two  one  two  one  two three
A       1    2    3    4    5    6   7
B       8    9    10   11   12   13  14

and I want to create a new DataFrame like this:

        barone  bartwo  bazone baztwo  fooone footwo foothree
A       1       2       3      4       5      6      7
B       8       9       10     11      12     13     14

What would be the possible code?

like image 568
Alirezakh Avatar asked Dec 04 '17 15:12

Alirezakh


1 Answers

1. Update using Python 3.6+ use f-string formatting with list comprehension:

df.columns = [f'{i}{j}' for i, j in df.columns]

2. Use map and join:

df.columns = df.columns.map(''.join)

3. If your columns has numeric datatypes, use map and format:

df.columns = df.columns.map('{0[0]}{0[1]}'.format) 

Output:

   barone  bartwo  bazone  baztwo  fooone  footwo  foothree
A       1       2       3       4       5       6         7
B       8       9      10      11      12      13        14
like image 176
Scott Boston Avatar answered Sep 25 '22 12:09

Scott Boston