Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 日期偏移:每月的一周_Python_Datetime_Pandas - Fatal编程技术网

Python 日期偏移:每月的一周

Python 日期偏移:每月的一周,python,datetime,pandas,Python,Datetime,Pandas,在尝试生成每个季度开始的第二个星期四(从3月份开始)的日期范围时遇到了一个奇怪的问题 import pandas as pd import numpy as np from datetime import * start = datetime(2010, 1, 1) end = datetime(2012, 12, 31) startrng = pd.bdate_range(start,end,freq='BQS-MAR') startrng = startrng + pd.datetool

在尝试生成每个季度开始的第二个星期四(从3月份开始)的日期范围时遇到了一个奇怪的问题

import pandas as pd
import numpy as np
from datetime import *

start = datetime(2010, 1, 1)
end = datetime(2012, 12, 31)

startrng = pd.bdate_range(start,end,freq='BQS-MAR')
startrng = startrng + pd.datetools.WeekOfMonth(week=1,weekday=3)

ts = pd.Series(np.random.randn(len(startrng)),index=startrng)
我得到以下结果:

2010-03-11   -0.585671
2010-06-10   -1.201917
2010-09-09   -0.063487
2010-12-09    0.221270
2011-03-10   -0.239836
2011-06-09    0.256052
2011-09-08    1.074758
2011-12-08    0.962388
2012-03-08   -1.601438
2012-06-14    0.854736
2012-09-13    1.532970
2012-12-13   -0.084027
虽然大多数日期抵消工作,2012-06-14实际上是一个月的第三个星期四,2012-06-01从一个星期五开始。我必须生成一个可以追溯到几年前的日期范围,手动检查生成的所有日期是没有效率的

是否有其他方法来生成正确的结果集?

答案:

startrng = startrng + pd.datetools.WeekOfMonth(week=1,weekday=4) - pd.datetools.BDay()

我刚看了一下日历,2012-06-14是六月的第二个星期四。21日是第三个星期四。一个月的第二个X日总是>=8,@Tyanna这是一个重要的doh时刻。在这种情况下,我需要改变我的标准,在本月第二周的星期四返回。感谢您指出这一愚蠢的疏忽。正确的术语应该是该月第二个星期五之前的工作日:
startrng=startrng+pd.datetools.WeekOfMonth(week=1,weekday=4)-pd.datetools.BDay()
这将产生预期的结果。有两件事是显而易见的:1)你的编辑是否显示了产生“错误”结果的代码?如果没有,你应该把它换回来。2) 继续写下你自己对这个问题的答案,然后接受它。