[英]Return the the product with highest sale for each quarter from transaction data
我有一个数据框如下。
df_sample=pd.DataFrame({'ID':['ID1','ID2','ID2','ID2','ID1','ID2','ID1','ID1'],
"quarter":['2016Q1','2016Q1','2016Q1','2017Q1','2017Q1','2018Q1','2018Q2','2018Q3'],
"product":['productA','productB','productA','productD','productA','productA','productD','ProductA'],
"sales":[100,200,100,400,100,500,400,100]})
我想根据每个ID的累计销售额来获得顶级产品。 即对于 2018Q1 季度的 ID1,我想获取所有数据 <=2018Q1 的每个售出产品的总和,并返回每个 ID 的产品名称。 提前致谢。
预期 output:
pd.DataFrame({'ID':['ID1','ID1','ID1','ID1', 'ID2','ID2','ID2'],
"quarter":['2016Q1','2017Q1','2018Q2','2018Q3','2016Q1','2017Q1','2018Q1'],
"product":['productA','productA','productD','productD','productB','ProductD','productA']})
IIUC,您可以使用双重groupby
:
(df_sample
.groupby(['ID', 'quarter', 'product'])['sales'].sum()
.unstack('product', fill_value=0)
.groupby('ID').cumsum()
.idxmax(1)
)
output:
ID quarter
ID1 2016Q1 productA
2017Q1 productA
2018Q2 productD
2018Q3 productD
ID2 2016Q1 productB
2017Q1 productD
2018Q1 productA
dtype: object
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.