Python 将包含两部分的列转换为多索引

Python 将包含两部分的列转换为多索引,python,pandas,Python,Pandas,我从CSV文件中读取了以下数据帧,无法更改: df = pd.DataFrame([['low', 0.5, 123, 0.8, 123], ['high', 0.7, 253, 0.9, 147]], columns=['type', 'g1 v0', 'g1 v1', 'g2 v0', 'g2 v1']) 我想在多索引中拆分列g1 v0、g1 v1等,例如: g1

我从CSV文件中读取了以下数据帧,无法更改:

df = pd.DataFrame([['low', 0.5, 123, 0.8, 123], 
                   ['high', 0.7, 253, 0.9, 147]], 
                  columns=['type', 'g1 v0', 'g1 v1', 'g2 v0',  'g2 v1'])
我想在多索引中拆分列g1 v0、g1 v1等,例如:

                   g1            g2
            v0     v1     v0     v1
   type     
0   low    0.5    123    0.8    123
1  high    0.7    253    0.9    147
基本上,我希望将列名的gx/vy部分分为两个独立的级别。

使用+:

另一个解决方案包括、拆分和:


我无法改进这个答案!set_index+split方法正是我想要的,谢谢!很高兴能帮助你!祝你好运
df = df.set_index('type')
df.columns = df.columns.str.split(expand=True)
print (df)
       g1        g2     
       v0   v1   v0   v1
type                    
low   0.5  123  0.8  123
high  0.7  253  0.9  147
df1 = df.drop('type', axis=1)
df1.columns = df1.columns.str.split(expand=True)
print (df1)
    g1        g2     
    v0   v1   v0   v1
0  0.5  123  0.8  123
1  0.7  253  0.9  147

df = pd.concat([df['type'].rename(('','type')), df1], axis=1)
print (df)
         g1        g2     
   type   v0   v1   v0   v1
0   low  0.5  123  0.8  123
1  high  0.7  253  0.9  147