我有一个示例数据框(日期为YYYY-MM-DD格式)
Region Area Hq Sales Date monthyear
R1 A1 H1 1000 2020-01-01 202001
R1 A1 H1 2000 2020-01-05 202001
R1 A1 H1 1500 2020-01-09 202001
R1 A1 H1 2000 2020-01-12 202001
R1 A1 H1 2000 2020-01-17 202001
R1 A1 H1 1300 2020-01-21 202001
R1 A1 H1 1000 2020-01-23 202001
R1 A1 H1 5000 2020-01-27 202001
从月1日到月9日,应计算总销售额
从每月10日到18日,应计算总销售额
从每月19日到24日,应计算总销售额
从每月25日到28日,应计算总销售额
所需输出:
Region Area Hq Sales till_date month_year
R1 A1 H1 4500 9th 202001
R1 A1 H1 4000 18th 202001
R1 A1 H1 2300 24th 202001
R1 A1 H1 5000 28th 202001
如您所见,我们没有2020-01-10,但我们从2020-01-10到2020-01-18的范围。所以我们选择的是属于这个范围的第12个、第17个。其他的也一样
另一个示例(仅一条记录)
Region Area Hq Sales Date monthyear
H1 A1 H1 1000 2020-01-01 202001
期望输出
Region Area Hq Sales till_date monthyear
H1 A1 H1 1000 2020-01-09 202001
结果出来之前,销售额是在2020年1月1日创造的,但在第1-9日下降
日期范围,截止日期为2020-01-09
补充说明:
Region Area Hq Sales Date monthyear
H1 A1 H1 2000 2020-01-31 202001
期望输出:
Region Area Hq Sales till_date monthyear
H1 A1 H1 0 NaN 202001
因为31号不在任何范围内,所以没有截止日期
我已经试了很多次了,但是没有成功。所以我在寻找你的帮助
提前谢谢
方法1:
使用
.asfreq
添加所有缺少的日期,并使用.isin
创建与groupby.sum
一起使用的掩码方法2:
另一种方法是使用
pd.cut
为groupby创建掩码相关问题 更多 >
编程相关推荐