Dataframe 在使用熊猫重采样功能后,如何为特定的时间间隔选择数据?

Dataframe 在使用熊猫重采样功能后,如何为特定的时间间隔选择数据?,dataframe,pandas-resample,Dataframe,Pandas Resample,我使用Pandas的重采样函数计算每6个月一次产品列表的销售额。 我对'6M'使用了重采样函数,并使用了apply{“column name”:“sum”} 现在我想创建一个表,其中包含前六个月的销售总额 考虑到所有产品都有超过3年的记录,并且没有一个产品具有相同的开始日期,我如何提取前6个月的总和 提前感谢您的建议 以下是数据示例: Product Date sales Product 1 6/30/2017 20 12/31/2017

我使用Pandas的重采样函数计算每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

在等待你的数据时,我做了这个。看看这是否对你有帮助

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

今晚晚些时候,我将查看您的样本数据并进行处理。

假设您想要过去3年的前6个月的总和,而不仅仅是今年的总和。您是否有可以共享的样本数据以及您作为一名员工的期望值output@Joe,这是一个按学期的结果表示例,我想按学期的产品获得目标表结果产品日期销售产品1 6/30/17 20.76 12/31/17 20009.21 6/30/18 10016.38 12/31/18 6584.31产品2 1/31/17 472.36 7/31/17 25150.43 1/31/18 19416.46 7/31/18 12325.02 1/31/19 7140.31目标第一学期销售结果表产品日期销售产品1 12/31/17 20009.21产品2 7/31/17 25150.43能否请在问题部分发布样本数据。无法从评论部分正确提取详细信息。@JoeFerndz,我在原始文章中包含了一个数据示例。我尝试了你的解决方案,完全符合我的需要。谢谢你,乔!我试试这个。我感谢你详细的回答如果这解决了你的问题,我想它确实解决了,请随意投票决定答案。