首页 > 解决方案 > 如何将列的值转换为新行

问题描述

我有一个巨大的熊猫数据火焰,例如

    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 循环填充它。

标签: python-3.xpandas

解决方案


您可以通过设置索引和堆栈来完成:

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

推荐阅读