我将尝试简要介绍我的查询,如果需要更多信息,请告诉我。
我的查询是基于滚动时间窗口概念创建“ Date_Diff”列。此df的Date_Diff <10天的子集将被处理,并且Rule列将被更新。 下一个开始计算“ Date_difference”的日期应该是至少有一个“有效”记录的行。
举个例子:
dict = { 'Store' : ['A','A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B'],
'Date':['4/1/2020', '4/5/2020', '4/7/2020', '4/8/2020', '4/10/2020', '4/12/2020', '4/16/2020', '4/4/2020', '4/6/2020' ,'4/17/2020'],
'Rule1':[ '', '', '', '', '', '', '','','',''],
'Rule2':[ '', '', '', '', '', '', '','','',''],
'Rule3':[ '', '', '', '', '', '', '','','',''],
'Rule4':[ '', '', '', '', '', '', '','','','']
}
df = pd.DataFrame(dict)
数据框看起来像这样:
Store Date Rule1 Rule2 Rule3 Rule4
0 A 4/1/2020
1 A 4/5/2020
2 A 4/7/2020
3 A 4/8/2020
4 A 4/10/2020
5 A 4/12/2020
6 A 4/16/2020
7 B 4/4/2020
8 B 4/6/2020
9 B 4/7/2020
以下是选择开始日期的条件:
滚动窗口以索引“ 0”开始,处理索引0至索引4(10天窗口)并应用方法。列规则“ X”将相应更新。现在,将index1选择为下一个开始日期,因为Rule1具有“有效”记录。
Store Date Date_Diff Rule1 Rule2 Rule3 Rule4
0 A 4/1/2020 0 Invalid Valid Valid Valid
1 A 4/5/2020 4 Valid Invalid Invalid Invalid
2 A 4/7/2020 6 Invalid Invalid Invalid Invalid
3 A 4/8/2020 7 Invalid Invalid Valid Invalid
4 A 4/10/2020 9 Valid Invalid Valid Valid
5 A 4/12/2020 11
6 A 4/16/2020 15
7 B 4/4/2020 0
8 B 4/6/2020 2
9 B 4/18/2020 14
第一次迭代后,索引1成为开始日期“ Date_Diff”,应该这样计算,并且看起来应该像这样
Store Date Date_Diff Rule1 Rule2 Rule3 Rule4
0 A 4/1/2020 0 Invalid Valid Valid Valid
1 A 4/5/2020 0 Valid Invalid Invalid Invalid
2 A 4/7/2020 2 Invalid Invalid Invalid Invalid
3 A 4/8/2020 3 Invalid Invalid Valid Invalid
4 A 4/10/2020 5 Valid Invalid Valid Valid
5 A 4/12/2020 7 Invalid Valid Invalid Invalid
6 A 4/16/2020 11 Valid Invalid Valid Valid
7 B 4/4/2020 0
8 B 4/6/2020 2
9 B 4/18/2020 14
我遇到了障碍,不知道如何进行。非常感谢您在这里的帮助。谢谢:)