使用以下方法对数据进行分组和汇总:
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 .
. . . . . .
. . . . . .
任何人都可以指导我如何实现这一目标吗?韩国社交协会。
答案 0 :(得分:1)
这将为您提供数据框
result = data.groupby(['Exporter', 'Importer','sitc4']).Value.sum().reset_index()
编辑:
您可以使用
将数据框转换为矩阵result.as_matrix()
答案 1 :(得分: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
答案 2 :(得分:0)
将结果作为数据框获得后(答案由A-Za-z给出),您只需要这段代码:
result.pivot(index='Exporter', columns='sitc4', values='Value')