将 pandas 列转置为一行,使用另一列作为索引

Transposing a pandas col into a row, using another col as an index

我想转置数据框中的一列,使其成为一行,同时使用另一行作为索引。具体来说,我需要所有 ColBColA == '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

让我们使用 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
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