2017-05-31 17 views
2

我有以下的數據幀(從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 v0g1 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部分被放入兩個獨立的水平。

回答

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 
+1

我不能在這個答案改善! – piRSquared

+0

'set_index' +'split'方法正是我所期待的,謝謝! – Holt

+0

很高興能爲您提供幫助!祝你好運! – jezrael