2017-03-09 136 views
0

分组,并使用汇总数据后:变换大熊猫GROUPBY /总结果数据帧

byExpImp = data.groupby(['Exporter', 'Importer','sitc4']) 
result = byExpImp['Value'].aggregate(np.sum) 

我得到如下类似的结果:

Exporter  Importer sitc4 

Afghanistan World  11   59.0 
         12   892.0 
         113   19.0 
Austria  World  11   41.0 
         113   8.0 
         118   4.0 

Name: Value, dtype: float64 

由于结果是系列而不是数据帧,我无法将其转换为如下所示的数据帧:

   11   12  113  118  . 

Afghanistan 59.0  892.0  19.0   0  . 
Austria  41.0   0  8.0  4.0  . 
    .    .   .   .   .  .  
    .    .   .   .   .  . 

任何人都可以指导我如何实现t他?韩国社交协会。

回答

1

到矩阵假设你有以下Pandas.Series:

In [227]: result 
Out[227]: 
Exporter  Importer sitc4 
Afghanistan World  11  59.0 
         12  892.0 
         113  19.0 
Austria  World  11  41.0 
         113  8.0 
         118  4.0 
Name: val, dtype: float64 

,您可以转动它,如下所示:

In [228]: (result.reset_index(name='Value') 
    ...:  .pivot_table(index='Exporter', columns='sitc4', values='Value', 
    ...:      aggfunc='sum', fill_value=0) 
    ...:) 
    ...: 
Out[228]: 
sitc4  11 12 113 118 
Exporter 
Afghanistan 59 892 19 0 
Austria  41 0 8 4 
1

这会给你的数据框

result = data.groupby(['Exporter', 'Importer','sitc4']).Value.sum().reset_index() 

编辑:

您可以将数据帧使用

result.as_matrix() 
+0

伟大的东西,TKS!你有什么想法如何将结果数据框转换为矩阵(如示例)? – PAstudilloE

+0

result.as_matrix() – Vaishali

0

得到的结果(由A-ZA-Z给出的答案)一个数据帧后,你只需要验证码:

result.pivot(index='Exporter', columns='sitc4', values='Value')