我的销售数据集如下:df1
district item Year salesAmount
Arba pen 2019 10
Arba pen 2019 20
Arba pencil 2018 30
Arba pencil 2018 30
Arba pencil 2019 30
Cebu pen 2019 100
Cebu pen 2019 300
Cebu pen 2018 100
Cebu pen 2018 100
Cebu pen 2019 100
Cebu laptop 2019 20000
Cebu laptop 2018 20000
Cebu fruit 2019 200
Cebu fruit 2018 800
Cebu fruit 2019 800
Cebu fruit 2018 100
我可以完成groupby并分别获得2018年和2019年每个产品的汇总金额。
result = df1.groupby(['district', 'item', 'Year'], as_index=False)['salesAmount'].sum()
但是我想像下面这样一个表格列来进行列的进一步转换
预期产量:
district item 2018_sales 2019_sales
Arba pen 0 30
Arba pencil 60 30
Cebu pen 500 200
Cebu laptop 20000 20000
Cebu fuit 900 1000
谢谢。
根据您先前对的计算result
,只需使用数据透视表和一些额外的格式化步骤对其进行扩展。请注意,默认aggfunc
为pivot_table
是'mean'
,但考虑到这些值已在上一步中聚集也不会,如果你喜欢使用有所作为np.sum
。
result = (
result
.pivot_table(index=['district', 'item'], columns=['Year'], values='salesAmount', fill_value=0)
.add_suffix('_sales')
.reset_index()
)
result.columns.name = None
>>> result
district item 2018_sales 2019_sales
0 Arba pen 0.0 30.0
1 Arba pencil 60.0 30.0
2 Cebu fruit 900.0 1000.0
3 Cebu laptop 20000.0 20000.0
4 Cebu pen 200.0 500.0
当然,您也可以忘记初始名称,groupby
而直接执行以下操作pivot_table
:
result = (
df1
.pivot_table(
index=['district', 'item'],
columns=['Year'],
values='salesAmount',
fill_value=0,
aggfunc='sum'
)
.add_suffix('_sales')
.reset_index()
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句