2017-03-07 40 views
1

我的CSV樣子:熊貓支點上

"a","b","c","d" 
1, "x", 1, 1 
1, "y", 2, 2 

,我想基於列的「B」將其轉換爲

"a", "x_c", "y_c", "x_d", "y_d" 
1, 1, 2, 1, 2 

我和支點嘗試過了,拆散。熊貓有缺點嗎?

編輯:我有多個列因此,我需要附加後綴/前綴

回答

5

使用pivot_table

df = df.pivot_table(index='a',columns='b', values=['c', 'd'], aggfunc=np.mean) 
#Multiindex to columns 
df.columns = df.columns.map(lambda x: '{}_{}'.format(x[1], x[0])) 
df = df.reset_index() 
print (df) 
    a x_c y_c x_d y_d 
0 1 1 2 1 2 

另外,如果重複,然後aggfunc施加:

print (df) 
    a b c d 
0 1 x 1 1 <-duplicates for 1, x 
1 1 y 2 2 
2 1 x 4 2 <-duplicates for 1, x 
3 2 y 2 3 


df = df.pivot_table(index='a',columns='b', values=['c', 'd'], aggfunc=np.mean) 
df.columns = df.columns.map(lambda x: '{}_{}'.format(x[1], x[0])) 
df = df.reset_index() 
print (df) 
    a x_c y_c x_d y_d 
0 1 2.5 2.0 1.5 2.0 <-x_c, x_d aggregated mean 
1 2 NaN 2.0 NaN 3.0