python在一个步骤中对多个列进行数据融合/透视

2024-09-28 16:20:36 发布

您现在位置:Python中文网/ 问答频道 /正文

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

看你的眼睛(冷和科尔变冷,科尔和科尔变科尔)。 事实上,我有很多列比可乐和可乐(约50列)将不会被旋转,只有最后4个是旋转成2列。你知道吗

尝试过: pd.熔化(df\u have,id\u vars=['cola,colb'],var\u name='colD')

但这需要我将所有50列添加到id\u vars中,我只能分多个步骤进行冷创建和colE创建—寻找更快的解决方案


Tags: iddfhavevarspd眼睛coldcole
1条回答
网友
1楼 · 发布于 2024-09-28 16:20:36

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

相关问题 更多 >