0

我使用 Pandas 的 resample 函数每 6 个月计算一次产品列表的销售额。我将重采样函数用于“6M”并使用 apply({“column-name”:“sum”})。

现在我想创建一个表,其中包含前六个月的销售额总和。

鉴于所有产品都有超过 3 年的记录,并且没有一个具有相同的开始日期,我如何提取前 6 个月的总和?

在此先感谢您的任何建议。

以下是数据示例:

Product     Date        sales
Product 1   6/30/2017   20
            12/31/2017  60
            6/30/2018   50
            12/31/2018  100
Product 2   1/31/2017   30
            7/31/2017   150
            1/31/2018   200
            7/31/2018   300
            1/31/2019   100
4

1 回答 1

1

在等待您的数据时,我正在处理这个问题。看看这是否对您有帮助。

import pandas as pd
df = pd.DataFrame({'Date':['2018-01-10','2018-02-15','2018-03-18',
                           '2018-07-10','2018-09-12','2018-10-14',
                           '2018-11-16','2018-12-20','2019-01-10',
                           '2019-04-15','2019-06-12','2019-10-18',
                           '2019-12-02','2020-01-05','2020-02-25',
                           '2020-03-15','2020-04-11','2020-07-22'],
                   'Sales':[200,300,100,250,150,350,150,200,250,
                            200,300,100,250,150,350,150,200,250]})

#first breakdown the data by Yearly Quarters
df['YQtr'] = pd.PeriodIndex(pd.to_datetime(df.Date), freq='Q')

#next create a column to identify Half Yearly - H1 for Jan-Jun & H2 for Jul-Dec
df.loc[df['YQtr'].astype(str).str[-2:].isin(['Q1','Q2']),'HYear'] = df['YQtr'].astype(str).str[:-2]+'H1' 
df.loc[df['YQtr'].astype(str).str[-2:].isin(['Q3','Q4']),'HYear'] = df['YQtr'].astype(str).str[:-2]+'H2' 

#Do a cummulative sum on Half Year to get sales by H1 & H2 for each year
df['HYear_cumsum'] = df.groupby('HYear')['Sales'].cumsum()

#Now filter out only the rows with the max value. That's the H1 & H2 sales figure
df1 = df[df.groupby('HYear')['HYear_cumsum'].transform('max')== df['HYear_cumsum']]

print (df)
print (df1)

其输出将是:

Source Data + Half Year cumulative sum:

          Date  Sales    YQtr   HYear  HYear_cumsum
0   2018-01-10    200  2018Q1  2018H1           200
1   2018-02-15    300  2018Q1  2018H1           500
2   2018-03-18    100  2018Q1  2018H1           600
3   2018-07-10    250  2018Q3  2018H2           250
4   2018-09-12    150  2018Q3  2018H2           400
5   2018-10-14    350  2018Q4  2018H2           750
6   2018-11-16    150  2018Q4  2018H2           900
7   2018-12-20    200  2018Q4  2018H2          1100
8   2019-01-10    250  2019Q1  2019H1           250
9   2019-04-15    200  2019Q2  2019H1           450
10  2019-06-12    300  2019Q2  2019H1           750
11  2019-10-18    100  2019Q4  2019H2           100
12  2019-12-02    250  2019Q4  2019H2           350
13  2020-01-05    150  2020Q1  2020H1           150
14  2020-02-25    350  2020Q1  2020H1           500
15  2020-03-15    150  2020Q1  2020H1           650
16  2020-04-11    200  2020Q2  2020H1           850
17  2020-07-22    250  2020Q3  2020H2           250

每半年的半年累计总和。

          Date  Sales    YQtr   HYear  HYear_cumsum
2   2018-03-18    100  2018Q1  2018H1           600
7   2018-12-20    200  2018Q4  2018H2          1100
10  2019-06-12    300  2019Q2  2019H1           750
12  2019-12-02    250  2019Q4  2019H2           350
16  2020-04-11    200  2020Q2  2020H1           850
17  2020-07-22    250  2020Q3  2020H2           250

我将查看您的示例数据并在今晚晚些时候进行处理。

于 2020-10-06T00:49:16.417 回答