Измените имена столбцов на переменную строки в Pandas - PullRequest
0 голосов
/ 07 мая 2020

Я импортирую файл Excel с именами столбцов в ячейках слияния. Когда я создаю фрейм данных pandas, у меня получается что-то вроде этого:

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

И я ожидаю, что имена первых столбцов будут помещены в новый столбец, например:

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

1 Ответ

1 голос
/ 07 мая 2020

Если у вас ниже фрейм данных, нам просто нужно сделать 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

Sample Data

          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}}
...