我有一个像下面这样的pandas多索引数据框:
col1 col2
ind1 ind2
A x 3 2
y 2 0
B x 2 4
y 2 3
C x 3 1
y 0 0
现在我想把ind2(x,y)作为列,将col1和col2作为第二级索引,如下所示:
x y
ind1 col
A col1 3 2
col2 2 0
B col1 2 4
col2 2 3
C col1 3 1
col2 0 0
我尝试了几种方法,但都失败了,有没有简单的方法来实现它?
谢谢!
答案 0 :(得分:0)
这是一种执行此操作的hacky方法。由于您基本上用索引替换列的名称,您可以手动获取列和索引名称,然后切换它们。
# grab column and index names
col_names = df.columns.values
idx_names = df.index.levels[1].values
# replace them and then rename the inner index
df.index.set_levels(col_names, level=1, inplace=True)
df.columns = idx_names
df.index.set_names('col', level=1, inplace=True)
x y
ind1 col
A col1 3 2
col2 2 0
B col1 2 4
col2 2 3
C col1 3 1
col2 0 0