簡體   English   中英

Python-使用按日期分組的日期時間遍歷數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM