将pandas col转换为行,使用另一个col作为索引

时间:2017-10-12 20:01:55

标签: python pandas dataframe pivot pandas-groupby

我希望在数据框中转置一列,使其成为一行,同时使用另一行作为索引。具体来说,我需要所有 ColB 值,其中 ColA ==' 1' 成为 RowA 的值,并且所有 ColB ,其中 ColA ==' 2' 成为 RowB 的值。

即。我需要转:

index    ColA    ColB
    0     1.0     1.1
    1     1.0    12.2
    2     1.0     4.5
    3     2.0     5.1
    4     2.0     7.7
    5     2.0     9.5

进入......

        ColB
           0       1      2
ColA
 1.0     1.1    12.2    4.5
 2.0     5.1     7.7    9.5

------更新#1 --------

参考@Scott_Boston提供的答案:

df.groupby('ColA').apply(lambda x: x.reset_index().ColB)

似乎给了我:

ColA
 1.0    0     1.1
        1    12.2
        2     4.5
 2.0    0     5.1
        1     7.7
        2     9.5

2 个答案:

答案 0 :(得分:3)

让我们使用groupbyapplyreset_index

df.groupby('ColA').apply(lambda x: x.reset_index().ColB)

输出:

ColB    0     1    2
ColA                
1.0   1.1  12.2  4.5
2.0   5.1   7.7  9.5

答案 1 :(得分:3)

df.groupby('ColA').ColB.apply(list).apply(pd.Series).rename_axis('ColB',1)
Out[113]: 
ColB    0     1    2
ColA                
1.0   1.1  12.2  4.5
2.0   5.1   7.7  9.5