如何将以下数据框转换为多索引数据框?

时间:2020-02-16 17:42:14

标签: python pandas

如何实现以下目标: 我有这样的桌子

|----------------------|
| Date | A | B | C | D |
|------+---+---+---+---|
| 2000 | 1 | 2 | 5 | 4 |
|------+---+---+---+---|
| 2001 | 2 | 2 | 7 | 4 |
|------+---+---+---+---|
| 2002 | 3 | 1 | 7 | 7 |
|------+---+---+---+---|
| 2003 | 4 | 1 | 5 | 7 |
|----------------------|

并将其转换为多索引类型数据框:

|------------------------------------|
| Column Name | Date | Value | C | D |
|-------------+------+-------+---+---|
|      A      | 2000 |   1   | 5 | 4 |
|             |------+-------+---+---|
|             | 2001 |   2   | 7 | 4 |
|             |------+-------+---+---|
|             | 2002 |   3   | 7 | 7 |
|             |------+-------+---+---|
|             | 2003 |   4   | 5 | 7 |
|-------------+------+-------+---+---|
|      B      | 2000 |   2   | 5 | 4 |
|             |------+-------+---+---|
|             | 2001 |   2   | 7 | 4 |
|             |------+-------+---+---|
|             | 2002 |   1   | 7 | 7 |
|             |------+-------+---+---|
|             | 2003 |   1   | 5 | 7 |
|------------------------------------|

我尝试在数据帧上使用Melt函数,但无法弄清楚如何实现所需的外观。我想我还必须将groupby函数应用于融化的数据框。

1 个答案:

答案 0 :(得分:1)

您可以将meltset_index一起使用。通过将CD添加为id_vars,这些列将保持相同的结构,然后只需将感兴趣的列设置为索引即可获得MultiIndex数据帧:< / p>

df.melt(id_vars=['Date', 'C', 'D']).set_index(['variable', 'Date'])

               C  D  value
variable Date             
A        2000  5  4      1
         2001  7  4      2
         2002  7  7      3
         2003  5  7      4
B        2000  5  4      2
         2001  7  4      2
         2002  7  7      1
         2003  5  7      1