繁体   English   中英

从交易数据中返回每个季度销售额最高的产品

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM