簡體   English   中英

將大熊貓分組依據/將結果轉換為數據框

[英]Transform pandas groupby / aggregate result to dataframe

使用以下方法對數據進行分組和匯總后:

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

由於結果是Series而不是dataframe,因此我無法將其轉換為如下所示的dataframe:

                11         12       113       118     . 

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

有人可以指導我如何實現這一目標嗎? Tks。

這會給你數據框

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

編輯:

您可以使用以下方式將數據框轉換為矩陣

result.as_matrix()

假設您具有以下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

在將結果作為數據框(A-Za-z給出的答案)后,您只需要以下代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM