【发布时间】:2017-11-09 22:36:45
【问题描述】:
我正在计算(下表)中 Total Wins (2 Days) 列的值 - 另请参阅下面的逗号分隔值。
Total Wins (2 Days) 是运动员在当天(例如第 5 天)或前一天(例如第 4 天)赢得的比赛次数的累积计数 - 因此,它是计算 2 天回溯窗口内的获胜次数。 (我可能想将回溯窗口更改为任意数字)。
例如,在第 7 天:简计数为 1,因为她在第 7 天赢了,但在第 6 天输了;比尔计数为 1,因为他在第 7 天输了,但在第 6 天赢了。史蒂夫在任何一天都没有赢。
在第 6 天,比尔计数为 1,因为他在第 5 天赢了,但在第 5 天输了。史蒂夫计数为 1,因为他在第 6 天输了,但在第 5 天赢了。简没有赢。
在 Python 中计算“总获胜次数(2 天)”的最佳方法是什么?
后续问题
另外,作为后续问题:关于“.rolling(2)”的参数(即本例中的 2),我如何将参数设置为从其他列派生的值在桌子上?
我想要做的是将 Race Day 更改为 datetime 对象(请参阅下面的更新表)并计算“总获胜次数(X 天)”作为上周、一个月、一年等赢得的比赛次数。 (我使用的数据库比上面的例子大)。
我更愿意将年份定义为日历年(即在 2014 年 1 月 1 日和 2015 年 1 月 1 日之间赢得的比赛),而不是简单的 265 天。
Race Day,Athlete,Position,Total Wins,Total Wins (2 Days)
1,Steve,1,1,1
1,Jane,2,0,0
1,Bill,3,0,0
2,Bill,1,1,1
2,Steve,2,1,1
2,Jane,3,0,0
3,Jane,1,1,1
3,Bill,2,1,1
3,Steve,3,1,0
4,Steve,1,2,1
4,Jane,2,1,1
4,Bill,3,1,0
5,Steve,1,3,2
5,Jane,2,1,0
5,Bill,3,1,0
6,Bill,1,2,1
6,Steve,2,3,1
6,Jane,3,1,0
7,Jane,1,2,1
7,Bill,2,2,1
7,Steve,3,3,0
Race Day,Athlete,Position,Total Wins,Total Wins (2 Months)
2000-01-01,Steve,1,1,?
2000-01-01,Jane,2,0,?
2000-01-01,Bill,3,0,?
2000-01-02,Bill,1,1,?
2000-01-02,Steve,2,1,?
2000-01-02,Jane,3,0,?
2000-01-03,Jane,1,1,?
2000-01-03,Bill,2,1,?
2000-01-03,Steve,3,1,?
2000-01-04,Steve,1,2,?
2000-01-04,Jane,2,1,?
2000-01-04,Bill,3,1,?
2000-01-05,Steve,1,3,?
2000-01-05,Jane,2,1,?
2000-01-05,Bill,3,1,?
2000-01-06,Bill,1,2,?
2000-01-06,Steve,2,3,?
2000-01-06,Jane,3,1,?
2000-01-07,Jane,1,2,?
2000-01-07,Bill,2,2,?
2000-01-07,Steve,3,3,?
【问题讨论】: