我有一个具有多级列标题的以下形式的数据框。在这种情况下,每个类别都有一个日期和价格。
Person Category1 Category2
index Name Date Price Date Price
1 Bob 1999 1 1994 2
2 Alice 1992 8 1992 3
3 Alice 1994 19 1990 6
我想将第一列标题(即“Person”、“Category1”、“Category2”等)转换为以名称作为值的新列。此外,我想连接具有相同标题名称的列,以获得如下内容:
index Name Date Price Category
1 Bob 1999 1 Category1
2 Alice 1992 8 Category1
3 Alice 1994 19 Category1
4 Bob 1994 2 Category2
5 Alice 1992 3 Category2
6 Alice 1990 6 Category2
尝试 reset_index()
删除多索引但没有任何改变。
答案 0 :(得分:1)
我们可以将数据帧的索引设置为 Name
列,然后 stack
对 level=0
上的数据帧进行重塑,然后是 rename_axis
和 reset_index
df.set_index(('Person', 'Name')).stack(0)\
.rename_axis(['Name', 'Category']).reset_index()
Name Category Date Price
0 Bob Category1 1999 1
1 Bob Category2 1994 2
2 Alice Category1 1992 8
3 Alice Category2 1992 3
4 Alice Category1 1994 19
5 Alice Category2 1990 6