2016-07-15 119 views
2

我有一個數據幀,它看起來像:顯示結果數據幀

 D  Type Value  
0  1  A   2 
1  1  B   4 
2  2  C   1 
3  1  A   1 

欲組由d和類型和求和值。

data=df.groupby(['D','Type']).sum() 

print(data) 

,給了我這樣的結果:

D  Type    Value 
1  A     3 
     B     4 
2  C     3 

但我想它的格式如下:

D  A   B  C  
1  3   4  Nan 
2  Nan  Nan  3 

回答

1

UPDATE:

r = df.pivot_table(index=['D'], columns='Type', aggfunc='sum').reset_index() 
r.columns = [tup[1] if tup[1] else tup[0] for tup in r.columns] 
r.to_csv('c:/temp/out.csv', index=False) 

結果:

D,A,B,C 
1,3.0,4.0, 
2,,,1.0 

原來的答覆:

您可以使用pivot_table()方法:

In [7]: df.pivot_table(index=['D'], columns='Type', aggfunc='sum', fill_value=0) 
Out[7]: 
    Value 
Type  A B C 
D 
1  3 4 0 
2  0 0 1 

或NaN的:

In [8]: df.pivot_table(index=['D'], columns='Type', aggfunc='sum') 
Out[8]: 
    Value 
Type  A B C 
D 
1  3.0 4.0 NaN 
2  NaN NaN 1.0 

PS我覺得你有你的groupby...一個錯字部分:

In [10]: df.groupby(['D','Type']).sum() 
Out[10]: 
     Value 
D Type 
1 A   3 
    B   4 
2 C   1 

應該有C - >1代替C - >3

+0

我如何打印值無頭?我的目標是將結果寫入文件。 – Lez

+0

@Lez,要什麼樣的文件? CSV?你能在你的問題中發佈想要的輸出格式嗎? – MaxU

+0

D; A; B; C 1; 3; 4;楠; 2; Nan; Nan; 3在txt文件中 – Lez