如何将列的值转换为新的行

时间:2019-10-20 12:17:37

标签: python-3.x pandas

我有一个大熊猫,例如

    A   B   C   D   E
0:  a0  b0  c0  d0  e0
1:  a1  b1  c1  d1  e1
2:  a2  b2  c2  d2  e2

我想将其更改为:

    A   B   C   X   Y
0:  a0  b0  c0  D   d0
0:  a0  b0  c0  E   e0
1:  a1  b1  c1  D   d1
1:  a1  b1  c1  E   e2
2:  a2  b2  c2  D   d1
2:  a2  b2  c2  E   e2

我该怎么做?

到目前为止,我正在创建一个新的dataFrame并使用for循环填充它。

1 个答案:

答案 0 :(得分:1)

您可以通过设置索引并堆叠:

df = (df.set_index(list('ABC'))
        .stack()
        .reset_index()
        .rename(columns={'level_3': 'X', 0: 'Y'})
)


    A   B   C  X   Y
0  a0  b0  c0  D  d0
1  a0  b0  c0  E  e0
2  a1  b1  c1  D  d1
3  a1  b1  c1  E  e1
4  a2  b2  c2  D  d2
5  a2  b2  c2  E  e2