我试图为NFL的每一场比赛分配一个发生的那一周的数值。 以2008赛季为例,9月4日至10日之间的所有比赛都在第1周进行
i = 0
week = 1
start_date = df2008['date'].iloc[0]
end_date = df2008['date'].iloc[-1]
week_range = pd.interval_range(start=start_date, end=end_date, freq='7D', closed='left')
for row in df2008['date']:
row = row.date()
if row in week_range[i]:
df2008['week'] = week
else:
week += 1
不过,这将把所有游戏更新到第1周
date week
1601 2008-09-04 1
1602 2008-09-07 1
1603 2008-09-07 1
1604 2008-09-07 1
1605 2008-09-07 1
... ... ...
1863 2009-01-11 1
1864 2009-01-11 1
1865 2009-01-18 1
1866 2009-01-18 1
1867 2009-02-01 1
我尝试使用print语句进行调试,这些是我的结果。”“射程内”是指在第一周进行的游戏,并按预期返回。你知道吗
In Range
In Range
In Range
In Range
In Range
In Range
In Range
In Range
In Range
In Range
In Range
In Range
In Range
In Range
In Range
In Range
Not In Range
Not In Range
Not In Range
Not In Range
Not In Range
Not In Range
df\U样品:
display(df2008[['date', 'home', 'away', 'week']])
date home away week
1601 2008-09-04 Giants Redskins 1
1602 2008-09-07 Falcons Lions 1
1603 2008-09-07 Bills Seahawks 1
1604 2008-09-07 Titans Jaguars 1
1605 2008-09-07 Dolphins Jets 1
... ... ... ... ...
1863 2009-01-11 Giants Eagles 1
1864 2009-01-11 Steelers Chargers 1
1865 2009-01-18 Cardinals Eagles 1
1866 2009-01-18 Steelers Ravens 1
1867 2009-02-01 Cardinals Steelers 1
有人能指出我哪里出错了吗?你知道吗
考虑避免任何循环,并对datetime字段使用
pandas.Series.dt.week
,该字段返回一年中的一周。然后,从第一周减去。然而,皱纹发生时,考虑到新的一年,所以必须有条件地处理通过增加年底的差异,然后周的新年。幸运的是,星期从星期一开始(所以星期四到星期天保持相同的星期数)。你知道吗用随机种子数据(包括新年日期)演示。将替换为OP的reproducible sample。你知道吗
数据
计算
OP最初的问题是:“有人能指出我错在哪里吗?”, 所以-尽管正如Parfait指出的那样,使用
pandas.Series.dt.week
是一个很好的解决方案-为了帮助他找到答案,我遵循了OP最初的代码逻辑,并进行了一些修正:输出:
相关问题 更多 >
编程相关推荐