![](/img/trans.png)
[英]How to transform the result of a Pandas `GROUPBY` function to the original dataframe
[英]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.