在日期时间字段中按小时对 NumPy 数组进行分箱

Binning NumPy array by hour within a datetime field

我一直在努力 Python 如何在包含日期和时间的字段中根据小时对来自 csv 的记录进行分组。该文件包含大约 1,000,000 条记录。我已经将文件读入 Pandas 数据帧并创建了一个二维 NumPy 数组,这样每条记录都是 NumPy 数组中的一个子列表,例如:

#this is a NumPy array
npdata = ([somedata, '2014-07-01 08:18:21', somedata, somedata, somedata, somedata, etc], 
[somedata, '2014-07-01 10:01:40', somedata, somedata, somedata, somedata, etc], etc...])

日期和时间,它是一个字符串,在每个子列表中始终位于相同的位置 (1)。我创建了变量 "hourlist",它是一个包含 24 个空子列表的列表。我想遍历 "npdata" 以在 "hourlist" 中的 24 个子列表中的每一个中填充来自 npdata 的子列表子集,这些子列表在日期和时间字段中包含相同的小时。例如。日期时间为 00:xx:xx 的所有 "npdata" 子列表将在 "hourlist" 的一个子列表中,所有 01:xx:xx 在另一个子列表中,所有 02:00:00 在另一个子列表中,等等,从 0 到 23 小时.我一直在努力解决这个问题,但一直在碰壁。根据一些 Google 搜索,我认为 datetime.strptime() class 方法应该用作解决方案的一部分,但我不明白如何。

我非常感谢任何提示/建议。

给定时间字符串的格式,小时始终位于字符串的 [11:13] 位置,并且始终为整数。

所以只需编写一个函数来获取该整数并将其用作索引,如下所示:

def get_hour(in_array):
    return int(in_array[1][11:13])

for x in npdata:
    hourlist[get_hour(x)].append(x)