python在一个步骤中在多个列上进行数据融合/透视
df拥有 df需要python在一个步骤中在多个列上进行数据融合/透视,python,pandas,pivot,melt,Python,Pandas,Pivot,Melt,df拥有 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 期待着(寒冷和科尔变冷,科尔和科尔变冷)。 实际上,我有比cola和colb更多的列(大约50列)不会被旋转,只有最后4列被旋转成2列 已尝试: pd.melt(df_h
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
期待着(寒冷和科尔变冷,科尔和科尔变冷)。
实际上,我有比cola和colb更多的列(大约50列)不会被旋转,只有最后4列被旋转成2列
已尝试:
pd.melt(df_have,id_vars=['cola,colb'],var_name='colD')
但这需要我将所有50列添加到id_vars,我只能分多个步骤进行冷创建和colE创建-寻找更快的解决方案
重命名
列,然后从宽到长
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
输出:
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