![](/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.