将列名称更改为Pandas中的行变量

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

我在合并单元格中导入具有列名的Excel文件。当我创建一个熊猫数据框时,我所拥有的是这样的:

|------|------|------|------|------|------|------|------|------|
|      |      |      |  A   |   A  |   B  |   B  |   C  |   C  |
|------|------|------|------|------|------|------|------|------|
|   K  |  L   |  M   |  X   |   Y  |   X  |   Y  |   X  |   Y  |
|------|------|------|------|------|------|------|------|------|
|  k1  |  l1  |  m1  |  1   |   2  |   3  |   4  |   5  |   6  |
|------|------|------|------|------|------|------|------|------|

而且我希望将firts列名称作为新列添加,如下所示:

|------|------|------|------|------|------|
|   K  |  L   |  M   |value |   X  |   Y  |
|------|------|------|------|------|------|
|  k1  |  l1  |  m1  |  A   |   1  |   2  |
|------|------|------|------|------|------|
|  k1  |  l1  |  m1  |  B   |   3  |   4  |
|------|------|------|------|------|------|
|  k1  |  l1  |  m1  |  C   |   5  |   5  |
|------|------|------|------|------|------|

python-3.x pandas melt
1个回答
1
投票

[如果您有下面的数据框,我们只需要做stack

s=df.stack(level=0).reset_index()
    K   L   M level_3  X  Y
0  k1  l1  m1       A  1  2
1  k1  l1  m1       B  3  4
2  k1  l1  m1       C  5  6

样本数据

          A     B     C   
          X  Y  X  Y  X  Y
K  L  M                   
k1 l1 m1  1  2  3  4  5  6

df.to_dict()
{('A', 'X'): {('k1', 'l1', 'm1'): 1}, ('A', 'Y'): {('k1', 'l1', 'm1'): 2}, ('B', 'X'): {('k1', 'l1', 'm1'): 3}, ('B', 'Y'): {('k1', 'l1', 'm1'): 4}, ('C', 'X'): {('k1', 'l1', 'm1'): 5}, ('C', 'Y'): {('k1', 'l1', 'm1'): 6}}
© www.soinside.com 2019 - 2024. All rights reserved.