2017-08-07 43 views
0

例如,我有:如何基於多列彙總矩陣形式的數據框?

Column A Column B Column C 
    A_1  B_1   0 
    A_1  B_2   1 
    A_2  B_3   3 
    A_2  B_5   2 

我想獲得這樣的:

 B_1 B_2 B_3 B_5 
A_1  0  1 nan nan 
A_2 nan nan 3 2 

我的想法是讓列A和B列的唯一值,重新創建基於新的數據幀並通過2 for循環填寫空格。有沒有更好的方式來使用熊貓來做到這一點?我的方法需要很長時間才能處理大型數據框。

+0

使用['pivot'(https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.pivot.html) – tarashypka

+0

明白了!謝謝。 –

回答

2

選項1

df.set_index(['Column A','Column B'])['Column c'].unstack() 

輸出:

Column B B_1 B_2 B_3 B_5 
Column A      
A_1  0.0 1.0 NaN NaN 
A_2  NaN NaN 3.0 2.0 

選項2

pd.crosstab(df['Column A'],df['Column B'],df['Column C'],aggfunc='sum') 

選項3

df.pivot_table('Column C','Column A','Column B','sum') 

選項4

df.pivot('Column A','Column B','Column C')