Dataframe 在使用熊猫重采样功能后,如何为特定的时间间隔选择数据?
我使用Pandas的重采样函数计算每6个月一次产品列表的销售额。 我对'6M'使用了重采样函数,并使用了apply{“column name”:“sum”} 现在我想创建一个表,其中包含前六个月的销售总额 考虑到所有产品都有超过3年的记录,并且没有一个产品具有相同的开始日期,我如何提取前6个月的总和 提前感谢您的建议 以下是数据示例: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
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,我在原始文章中包含了一个数据示例。我尝试了你的解决方案,完全符合我的需要。谢谢你,乔!我试试这个。我感谢你详细的回答如果这解决了你的问题,我想它确实解决了,请随意投票决定答案。