Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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_Chunking - Fatal编程技术网

使用python将日期分块到可管理组

使用python将日期分块到可管理组,python,chunking,Python,Chunking,我需要在30天的时间段中创建日期段,并对其进行迭代。例如,假设我想查看过去3年中30天的增量。我需要以下资料: 区块1: 结束日期:2015年2月19日 开工日期:2015年1月20日 组块2: 结束日期:2015年1月20日 开工日期:2014年12月21日 区块3: 区块4: 然后我将开始日期和结束日期插入RESTAPI接口 我试着做一些类似的事情,然后使用itertools groupby退出过去的30天。如有任何建议,将不胜感激 chunk = now.strftime("%Y-%m-

我需要在30天的时间段中创建日期段,并对其进行迭代。例如,假设我想查看过去3年中30天的增量。我需要以下资料:

区块1: 结束日期:2015年2月19日 开工日期:2015年1月20日

组块2: 结束日期:2015年1月20日 开工日期:2014年12月21日

区块3: 区块4:

然后我将开始日期和结束日期插入RESTAPI接口

我试着做一些类似的事情,然后使用itertools groupby退出过去的30天。如有任何建议,将不胜感激

chunk = now.strftime("%Y-%m-%d")
numdays = 1095
dateList = []
for x in range (0, numdays):
    dateList.append(chunk - datetime.timedelta(days = x))
print dateList
给出了dateutil的解决方案,问题就变成了如何轻松地从每个块中提取第一个和最后一个元素。我试着在块上循环并提取0/-1元素,但这似乎从每个块中提取了所有30个数据点

 for start in chunks:
  print [chunks[0], chunks[-1]]
如果我手动将块[0]分配给新元素,我可以打印它们。但这就引出了一个问题:对于所有块,什么是更有效的方法

chunk0 = chunks[0]
print [chunk0[0], chunk0[-1]]
我建议使用dateutil:

然后:


谢谢我给了它一个镜头,它确实有效,我只需要将格式转换回日期字符串2015-01-20。提取每个区块的开始和结束日期的最简单方法是什么?这样我就可以遍历开始日期和结束日期的整个列表了?对于后续操作,您应该对问题添加一个编辑,并显示一些代码,这是您最好的尝试。谁知道呢,你自己可能会想出一个非常有效的解决方案。。。总比我把它给别人好。教一个人钓鱼等等……我试着做过这样的事;打印[[x[-1]表示el中的x]表示el中的块],但我从datetime中得到了错误。”datetime.datetime对象没有“getitem”属性,因为每个el本身就是一个完整的块,所以您希望获取el的第一个和最后一个元素,而不是el中每个事物的第一个和最后一个元素。每个el中的内容本身就是datetime.datetime的实例,正如该错误正确地告诉您的那样,datetime无法通过任何类型的索引(即u getitem uuuuuuuuuuuu所做的)来分割特定项。这很有效,谢谢。对于区块中的单个区块:开始日期=单个区块[0]结束日期=单个区块[-1]打印开始日期,结束日期
foo = list(
    dateutil.rrule.rrule(dateutil.rrule.DAILY, 
                         dtstart=datetime.date(2012, 2, 19),
                         until=datetime.date(2015, 2, 19))
)
In [36]: chunks = [foo[i:i+30] for i in range(0, len(foo), 30)]

In [37]: chunks[0]
Out[37]: 
[datetime.datetime(2012, 2, 19, 0, 0),
 datetime.datetime(2012, 2, 20, 0, 0),
 datetime.datetime(2012, 2, 21, 0, 0),
 datetime.datetime(2012, 2, 22, 0, 0),
 datetime.datetime(2012, 2, 23, 0, 0),
 datetime.datetime(2012, 2, 24, 0, 0),
 datetime.datetime(2012, 2, 25, 0, 0),
 datetime.datetime(2012, 2, 26, 0, 0),
 datetime.datetime(2012, 2, 27, 0, 0),
 datetime.datetime(2012, 2, 28, 0, 0),
 datetime.datetime(2012, 2, 29, 0, 0),
 datetime.datetime(2012, 3, 1, 0, 0),
 datetime.datetime(2012, 3, 2, 0, 0),
 datetime.datetime(2012, 3, 3, 0, 0),
 datetime.datetime(2012, 3, 4, 0, 0),
 datetime.datetime(2012, 3, 5, 0, 0),
 datetime.datetime(2012, 3, 6, 0, 0),
 datetime.datetime(2012, 3, 7, 0, 0),
 datetime.datetime(2012, 3, 8, 0, 0),
 datetime.datetime(2012, 3, 9, 0, 0),
 datetime.datetime(2012, 3, 10, 0, 0),
 datetime.datetime(2012, 3, 11, 0, 0),
 datetime.datetime(2012, 3, 12, 0, 0),
 datetime.datetime(2012, 3, 13, 0, 0),
 datetime.datetime(2012, 3, 14, 0, 0),
 datetime.datetime(2012, 3, 15, 0, 0),
 datetime.datetime(2012, 3, 16, 0, 0),
 datetime.datetime(2012, 3, 17, 0, 0),
 datetime.datetime(2012, 3, 18, 0, 0),
 datetime.datetime(2012, 3, 19, 0, 0)]

In [38]: chunks[-1]
Out[38]: 
[datetime.datetime(2015, 2, 3, 0, 0),
 datetime.datetime(2015, 2, 4, 0, 0),
 datetime.datetime(2015, 2, 5, 0, 0),
 datetime.datetime(2015, 2, 6, 0, 0),
 datetime.datetime(2015, 2, 7, 0, 0),
 datetime.datetime(2015, 2, 8, 0, 0),
 datetime.datetime(2015, 2, 9, 0, 0),
 datetime.datetime(2015, 2, 10, 0, 0),
 datetime.datetime(2015, 2, 11, 0, 0),
 datetime.datetime(2015, 2, 12, 0, 0),
 datetime.datetime(2015, 2, 13, 0, 0),
 datetime.datetime(2015, 2, 14, 0, 0),
 datetime.datetime(2015, 2, 15, 0, 0),
 datetime.datetime(2015, 2, 16, 0, 0),
 datetime.datetime(2015, 2, 17, 0, 0),
 datetime.datetime(2015, 2, 18, 0, 0),
 datetime.datetime(2015, 2, 19, 0, 0)]