Datetime 缩短时间

Datetime 缩短时间,datetime,python-3.6,Datetime,Python 3.6,我有一个python列表,格式如下 time_list = ['2021-02-04 02:40:00', '2021-02-04 02:41:00', '2021-02-04 02:42:00', '2021-02-04 02:44:00', '2021-02-04 03:01:00', '2021-02-04 03:02:00', '2021-02-04 03:03:00', '2021-02-04 03:04:00', '2021-02-04 03:05:00'] 我需要像这样的时间 a

我有一个python列表,格式如下

time_list = ['2021-02-04 02:40:00', '2021-02-04 02:41:00', '2021-02-04 02:42:00', '2021-02-04 02:44:00', '2021-02-04 03:01:00', '2021-02-04 03:02:00', '2021-02-04 03:03:00', '2021-02-04 03:04:00', '2021-02-04 03:05:00']
我需要像这样的时间

answer_list = [{'start': '2021-02-04 02:40:00', 'end': '2021-02-04 02:44:00'}, {'start': '2021-02-04 03:01:00', 'end': '2021-02-04 03:05:00'}]

我尝试了多种方法,没有一种方法看起来是正确的。有人能告诉我怎么做吗,或者有什么模块可以裁剪吗?

在我看来,您想按小时列出开始和结束时间。如果我是对的,那么“作物”不是正确的术语,而是指“群体”。(如果我错了,请纠正我。)

这是一个算法,不是很花哨,但应该可以做到这一点:

从dateutil导入解析器作为dp
时间列表=['2021-02-04 02:40:00','2021-02-04 02:41:00','2021-02-04 02:42:00','2021-02-04 02:44:00','2021-02-04 03:01:00','2021-02-04 03:02:00','2021-02-04 03:03:00','2021-02-04 03:04:04:04:04:00','2021-02-04 03:05:00']
答案列表=[]
开始=无
对于时间列表中的dtm:
d=dp.parse(dtm)
如果“开始”为“无”:
开始=d
小时=d.hour
elif hour==d.hour:
结束=d
持续
其他:
答案列表。追加(dict(start=str(start),end=str(end)))
开始=d
小时=d.hour
答案列表。追加(dict(start=str(start),end=str(end)))
打印(答案列表)
输出:

[{'start': '2021-02-04 02:40:00', 'end': '2021-02-04 02:44:00'}, {'start': '2021-02-04 03:01:00', 'end': '2021-02-04 03:05:00'}]

您还可以使用pandas更轻松地对这些数据进行分组和操作:

将熊猫作为pd导入
时间列表=['2021-02-04 02:40:00','2021-02-04 02:41:00','2021-02-04 02:42:00','2021-02-04 02:44:00','2021-02-04 03:01:00','2021-02-04 03:02:00','2021-02-04 03:03:00','2021-02-04 03:04:04:04:04:00','2021-02-04 03:05:00']
df=pd.DataFrame(dict(datetime=time\u列表),index=pd.DatetimeIndex(time\u列表))
df['Hour']=[df.index中d的d.Hour]
打印(df)
日期时间小时
2021-02-04 02:40:00  2021-02-04 02:40:00     2
2021-02-04 02:41:00  2021-02-04 02:41:00     2
2021-02-04 02:42:00  2021-02-04 02:42:00     2
2021-02-04 02:44:00  2021-02-04 02:44:00     2
2021-02-04 03:01:00  2021-02-04 03:01:00     3
2021-02-04 03:02:00  2021-02-04 03:02:00     3
2021-02-04 03:03:00  2021-02-04 03:03:00     3
2021-02-04 03:04:00  2021-02-04 03:04:00     3
2021-02-04 03:05:00  2021-02-04 03:05:00     3
现在,您可以执行以下操作:

打印(df.groupby('Hour').first()) 日期时间 时辰 2 2021-02-04 02:40:00 3 2021-02-04 03:01:00 打印(df.groupby('Hour').last()) 日期时间 时辰 2 2021-02-04 02:44:00 3 2021-02-04 03:05:00 而且

答案列表=[]
gbh=df.groupby('Hour')
对于start,以zip结尾(gbh.first().values,gbh.last().values):
答案列表。追加(dict(start=start[0],end=end[0]))
打印(答案列表)
[{'start':'2021-02-04 02:40:00','end':'2021-02-04 02:44:00',{'start':'2021-02-04 03:01:00','end':'2021-02-04 03:05:00'}]

你所说的“裁剪”是什么意思?我是否正确理解您只想将列表中的值插入几个交替使用“开始”和“结束”键的字典?这是否回答了您的问题?你试过什么?从给定的示例中,我不清楚如何从输入到所需的输出。@mkrieger1:OPs第一个块的大小似乎为4,第二个块的大小为5?