2016-07-15 83 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