I want to pivot a dataframe like:
dim1 Value_V Value_y instance
0 A_1 50.000000 0 instance200
1 A_2 6500.000000 1 instance200
2 A_3 50.000000 0 instance200
3 A_4 4305.922313 1 instance200
Into a dataframe with hierarchical columns like that:
A_1 A_2 A_3 .....
Value_V Value_y Value_V Value_y Value_V Value_y
instance200 50 0 6500 1 50 0
I tried df = df.pivot(index = "instance", columns = "dim1")
, but it will only give me a frame like that:
Value_V Value_y
A_1 A_2 A_3 .... A_1 A_2 A_3 ....
instance200 50 6500 50 0 1 0
How can i change the hierarchy of the columns?
I figured it out by myself:
df = df.swaplevel(0,1,axis = 1).sort(axis = 1)
will do
What you need is reorder_levels and then sort the columns, like this:
import pandas as pd
df = pd.read_clipboard()
df
Out[8]:
dim1 Value_V Value_y instance
0 A_1 50.000000 0 instance200
1 A_2 6500.000000 1 instance200
2 A_3 50.000000 0 instance200
3 A_4 4305.922313 1 instance200
In [9]:
df.pivot('instance', 'dim1').reorder_levels([1, 0], axis=1).sort(axis=1)
Out[9]:
dim1 A_1 A_2 A_3 A_4
Value_V Value_y Value_V Value_y Value_V Value_y Value_V Value_y
instance
instance200 50 0 6500 1 50 0 4305.922313 1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With