繁体   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