[英]Python - Iterate through array with datetimes grouped by date
我有一個含有序列日期時間的2D陣列:
01/01/2000 06:30:00, string, string
01/01/2000 08:30:00, string, string
01/01/2000 10:30:00, string, string
...
02/01/2000 06:30:00, string, string
02/01/2000 08:30:00, string, string
02/01/2000 10:30:00, string, string
當我遍歷數組時,我不想對每個元素執行操作,而是希望將它們分組為四舍五入的日期,將其作為子集進行處理,然后移至下一個日期的下一個組。
感覺有點過時,但是我需要逐行走,將它們收集到一個臨時數組中,工作,沖洗,然后繼續嗎? 還是在Python中有一種工具可以使用這種優雅的迭代器來處理日期和時間?
您應該能夠使用groupby
使其成為列表。
我有這個以日期時間為第一個元素的有序數據的示例列表,希望我能理解你的意思:
old = [[datetime.datetime(2017, 1, 1, 3, 0), 'test'],
[datetime.datetime(2017, 1, 1, 6, 0), 'test'],
[datetime.datetime(2017, 1, 1, 9, 0), 'test'],
[datetime.datetime(2017, 1, 2, 9, 0), 'test'],
[datetime.datetime(2017, 1, 2, 12, 0), 'test'],
[datetime.datetime(2017, 1, 3, 2, 0), 'test'],
[datetime.datetime(2017, 1, 3, 8, 0), 'test']]
您可以使用lambda函數進行操作並按日期/時間進行比較/分組。 例如,現在我僅按日期分組。
from itertools import groupby
new = []
for key, group in groupby(old, lambda x: x[0].date()):
new.append(list(group))
結果是按日期分組的列表列表。
[[[datetime.datetime(2017, 1, 1, 3, 0), 'test'],
[datetime.datetime(2017, 1, 1, 6, 0), 'test'],
[datetime.datetime(2017, 1, 1, 9, 0), 'test']],
[[datetime.datetime(2017, 1, 2, 9, 0), 'test'],
[datetime.datetime(2017, 1, 2, 12, 0), 'test']],
[[datetime.datetime(2017, 1, 3, 2, 0), 'test'],
[datetime.datetime(2017, 1, 3, 8, 0), 'test']]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.