从长到宽重塑熊猫数据框时的自定义变量名称

问题描述 投票:0回答:1

我有以下数据框:

import numpy as np
import pandas as pd
silly = pd.DataFrame({'id':[i for i in range(3) for j in range(3)], 'cat':['a','b','c'] * 3, 'v1':np.random.random(9), 'v2':np.random.random(9)})
print(silly)

   id cat        v1        v2
0   0   a  0.374509  0.211018
1   0   b  0.132380  0.996551
2   0   c  0.194045  0.956656
3   1   a  0.475134  0.892442
4   1   b  0.166790  0.615519
5   1   c  0.285272  0.896530
6   2   a  0.397225  0.147312
7   2   b  0.504841  0.679368
8   2   c  0.595551  0.625830

我需要将此数据从长格式转换为宽格式。为此,我尝试过:

silly_wide = silly.pivot(index='id', columns='cat', values=['v1','v2'])
print(silly_wide)

           v1                            v2                    
cat         a         b         c         a         b         c
id                                                             
0    0.374509  0.132380  0.194045  0.211018  0.996551  0.956656
1    0.475134  0.166790  0.285272  0.892442  0.615519  0.896530
2    0.397225  0.504841  0.595551  0.147312  0.679368  0.625830

这有效,但是我需要“展平”列名以获得自定义列名。所需的结果应如下所示:

id         v1a       v1b       v1c       v2a       v2b       v2c                                                            
 0    0.374509  0.132380  0.194045  0.211018  0.996551  0.956656
 1    0.475134  0.166790  0.285272  0.892442  0.615519  0.896530
 2    0.397225  0.504841  0.595551  0.147312  0.679368  0.625830

pandas.DataFrame.pivot()中是否有可以提供帮助的参数?否则怎么办?

python pandas dataframe pivot reshape
1个回答
1
投票
>>> silly.pivot(values='value', columns='cat', index='id').add_prefix('value_')
cat   value_a   value_b   value_c
id                               
0    0.207024  0.412420  0.001094
1    0.990861  0.386278  0.092327
2    0.093256  0.984317  0.721615
© www.soinside.com 2019 - 2024. All rights reserved.