问题描述
我将尝试简要介绍我的查询,如果需要更多信息,请告诉我。
我的查询是创建一个'10'天的滚动时间窗口,并在其上应用一些业务规则。在应用业务规则并更新了各个列之后,请更改开始日期,然后再次计算时间窗口并应用规则。
举个例子:
dict = { 'Store' : ['A','A','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':[ 'Invalid','Valid','Invalid','',''],'Rule2':[ 'Valid','Rule3':[ 'Valid','Rule4':[ 'Valid','']
}
df = pd.DataFrame(dict)
数据框看起来像这样:
Store Date Rule1 Rule2 Rule3 Rule4
0 A 4/1/2020 Invalid Valid Valid Valid
1 A 4/5/2020 Valid Invalid Invalid Invalid
2 A 4/7/2020 Invalid Invalid Invalid Invalid
3 A 4/8/2020 Invalid Invalid Valid Invalid
4 A 4/10/2020 Valid Invalid Valid Valid
5 A 4/12/2020 Invalid Valid Invalid Invalid
6 A 4/16/2020 Valid Invalid Valid Valid
7 B 4/4/2020
8 B 4/6/2020
9 B 4/7/2020
以下是选择开始日期的条件:
- 按商店分组,和
- BRx列应至少包含一个“有效”
滚动窗口以索引“ 0”开始,索引0至索引4(10天窗口)适用于不同的规则。列规则“ X”将相应更新。现在,将index1选择为下一个开始日期,因为Rule1在那里有一个“有效”记录,依此类推,就是index3。
我遇到了障碍,不知道如何进行。非常感谢您在这里的帮助。谢谢:)
预期产量
期望是:
- 要计算“ data_diff”列,以计算从起点开始的日期差。 (在RuleX栏中发布将应用和更新哪些规则)
- 此起点从找到“有效”的行开始更新:
第一遍之后:
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/7/2020 3
第二遍之后:
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 Invalid Invalid
4 A 4/10/2020 5 Invalid Invalid Valid Valid
5 A 4/12/2020 7 Invalid Valid Invalid Valid
6 A 4/16/2020 11
7 B 4/4/2020 0
8 B 4/6/2020 2
9 B 4/7/2020 3
第三遍将从索引4开始,因为它具有“有效”记录
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)