将包含两部分的列转换为MultiIndex

时间:2017-05-31 08:10:04

标签: python pandas

我有以下DataFrame(从CSV文件中读取我无法更改):

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

基本上,我希望将列名的ngOnInit部分放入两个不同的级别。

1 个答案:

答案 0 :(得分:4)

使用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

dropsplitconcat的另一种解决方案:

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