Skip to content

Pandas How To Make Column Values Into Column Index

How to make column values into the column index with pandas?#

I have the following data:

        dt          cls         cd
0       1999-10-25  845.0   DSY
1       1999-10-26  830.0   DSY
2       1999-10-27  830.0   DSY
...
4759    2015-02-05  25633.0     MRP
4760    2015-02-06  25670.0     MRP
4761    2015-02-09  25892.0     MRP
...
9261    1991-03-06  2.59    USDZAR
9262    1991-03-07  2.59    USDZAR
9263    1991-03-08  2.60    USDZAR

I would like to transpose (if that is the correct word) the data on the dt index:

        dt          DSY         MRP   USDZAR
0       1999-10-25  845.0   NaN   Nan
1       1999-10-26  830.0   NaN   Nan
2       1999-10-27  830.0   Nan   Nan
...
4759    2015-02-05  25633.0     MRP
4760    2015-02-06  25670.0     MRP
4761    2015-02-09  25892.0     MRP
...
9261    1991-03-06  2.59    USDZAR
9262    1991-03-07  2.59    USDZAR
9263    1991-03-08  2.60    USDZAR

There are various ways of doing this:

Make a note on what you want your index to be, in my case I want the date column dt to be the index. Make a note of what you want the value of the columns to be, in my case cls Make a note of the column you want to use to be the the names of new columns in my case the cd.

Using pivot_table:

df = df.pivot_table(values='cls', index=df.dt, columns='cd', aggfunc='first')

Using pivot:

df = df.pivot(index=df.dt, columns='cd')['cls']

Note there must be no duplicates for this to work

Source:#

StackOverflow pandas column values to columns