在一列中转换列名multindex

2024-07-01 07:03:44 发布

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

我有这个数据框

dt = pd.DataFrame({'At': ['A','B','C'], 
                   'R': ['27,0', '27,0', '27,0'], 
                   'V1': [0,0,0], 
                   'V2': [100,32,72], 'V3':[31,12,3]})

  At     R  V1   V2  V3
0  A  27,0   0  100  31
1  B  27,0   0   32  12
2  C  27,0   0   72   3

然后我做一个透视表

dt.pivot_table(index='At', columns='R', 
               values=['V1','V2','V3']).reset_index()
  At   V1   V2   V3
R    27,0 27,0 27,0
0  A    0  100   31
1  B    0   32   12
2  C    0   72    3

我想把我的multindex列名称合并成这样

  At   27,0_V1   27,0_V2   27,0_V3
0  A       0       100        31
1  B       0        32        12
2  C       0        72         3

这只是一个样本,我有不止一个级别

谢谢


Tags: columns数据dataframeindexdttablev3at
1条回答
网友
1楼 · 发布于 2024-07-01 07:03:44

稍微操纵一下头;使用swaplevel+MultiIndex.map

v = dt.pivot_table(index='At', columns='R', 
               values=['V1','V2','V3']).reset_index()

v.columns =  v.columns.swaplevel().map('_'.join).str.strip('_')

或者,正如斯科特·波士顿所说

v.columns = v.columns.map('{0[1]}_{0[0]}'.format).str.strip('_')

v
  At  27,0_V1  27,0_V2  27,0_V3
0  A        0      100       31
1  B        0       32       12
2  C        0       72        3

相关问题 更多 >

    热门问题