2017-03-09 130 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')