Skip to content
Advertisement

Python dataframe columns from row&column header

I have a data frame df1 like this:

       A    B     C   ...
mean   10   100   1
std    11   110   2
median 12   120   3

I want to make another df with separate col for each df1 col. header-row name pair:

A-mean   A-std   A-median   B-mean   B-std   B-median  C-mean   C-std   C-median   ...
10       11      12         100      110     120       1        2       3

Basically I have used the pandas.DataFrame.describe function and now I would like to transpose it this way.

Advertisement

Answer

You can unstack your DataFrame into a Series, flatten the Index, turn it back into a DataFrame and transpose the result.

out = (
    df.unstack()
    .pipe(lambda s: 
        s.set_axis(s.index.map('-'.join))
    )
    .to_frame().T
)

print(out)
   A-mean  A-std  A-median  B-mean  B-std  B-median  C-mean  C-std  C-median
0      10     11        12     100    110       120       1      2         3
Advertisement