2016-05-16 45 views
0

我使用下面的命令pivot一堆行:Dataerror使用支點在熊貓

df[df.branch=='ALG'].reset_index().pivot_table(index='branch', columns='monyear', values='conceptname') 

conceptnamestring列,因此我得到以下錯誤:

DataError: No numeric types to aggregate 

我如何得到pandas忽略此?我不想彙總任何東西,我只是想以列狀格式重新塑造我的數據。

這裏是我的輸入數據:

branch monyear conceptname 
A   Jul   text1 
A   Jul   text2 
A   Aug   text3 
A   Aug   text4 
B   Jul   text5 
B   Jul   text6 
B   Aug   text7 
B   Aug   text8 

所需的輸出:

branch Jul Aug 
A  text1 text3 
A  text2 text4 
B  text5 text7 
B  text6 text8 

AB可以被認爲是不同部門在不同的月份(JulAug)賣東西的。我想列出這些分支在不同月份銷售的東西。

任何幫助,將不勝感激。 TIA。

+0

你可以添加樣本輸入數據和所需輸出? – ayhan

+0

如果你只是想重塑你的數據,你可以使用'df.transpose'?或者如果我誤解了你的問題。 'df.pivot_table'使用默認的'aggfunc'參數作爲'mean',所以你可以寫一些東西作爲接受字符串值的替代品(比如說類似於first()的東西,即'aggfunc = lambda x: xx [0]' – mburke05

+0

也就像@ayhan說的那樣,它將有助於準確知道你希望你的'conceptname'系列轉換成什麼樣的值。 – mburke05

回答

3

嘗試:

df_ = df.set_index(['branch']).groupby('monyear').apply(lambda x: x.T).T 

df_ = df_.xs('conceptname', axis=1, level=1) 

print df_ 

monyear Aug Jul 
branch    
A  text3 text1 
A  text4 text2 
+0

給我'ValueError:索引包含重複條目,無法重塑 ' – Patthebug

+0

@Patthebug答案已編輯 – piRSquared

+0

非常感謝。這部分工作。它爲'Jul monyear','Jul概念名稱','Aug monyear','Aug概念名稱'等創建了額外的列。例如,'Jul'的兩列給了我一列中只有'monyear'的值,另一列中的'conceptname'的值。有沒有一種方法我只能得到列中的'conceptname'值。現在,我必須手動繼續並刪除「monyear」列。 – Patthebug