df有
cola colb colc cold cole colf colg
1 x y 10 15 20 25
2 x y 11 16 27 28
3 x y 12 14 20 30
df想要
cola colb colc colD colE
1 x y 10 20
1 x y 15 25
2 x y 11 27
2 x y 16 28
3 x y 12 20
3 x y 14 30
希望对df进行透视(冷和科尔变成colD,colf和colg变成colE)。 实际上,与可乐和可乐相比,我的列要多得多(约50列),它们不会被旋转,只有最后四个会被旋转成2列。
尝试过: pd.melt(df_have,id_vars = ['cola,colb'],var_name ='colD')
但这需要我将所有50列都添加到id_vars中,并且我只能分多个步骤进行colD创建和colE创建-寻找更快的解决方案
答案 0 :(得分:3)
rename
列,然后wide_to_long
import pandas as pd
df = df.rename(columns={'cold': 'colD_1', 'cole': 'colD_2', 'colf': 'colE_1', 'colg': 'colE_2'})
df = (pd.wide_to_long(df, i=['cola', 'colb', 'colc'], j='drop',
stubnames=['colD', 'colE'], sep='_')
.reset_index().drop(columns='drop'))
cola colb colc colD colE
0 1 x y 10 20
1 1 x y 15 25
2 2 x y 11 27
3 2 x y 16 28
4 3 x y 12 20
5 3 x y 14 30