以epoch tim为索引的hdf存储

2024-04-19 21:58:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我在HDFStore中有熊猫数据帧,索引存储为epoch time。我想读取数据并根据特定索引进行查询。你知道吗

例如-如果在datetime64[ns]中有索引而不是epoc,则可以获得如下结果:

starttime = datetime.datetime(2008,12,22,00,19,55,150000)

start = pd.Timestamp(stoptime) + pd.Timedelta(1)

stoptime = datetime.datetime(2008,12,22,00,55,55,180000)

stop = pd.Timestamp(starttime) + pd.Timedelta(1)

pd.read_hdf('file.h5',columns=['Data','Qty'],where='index > start & index < stop']

如果HDFStore中的索引存储为epoch time,如何获得相同的结果?你知道吗


Tags: 数据datetimeindextime读取数据starttimestamptimedelta
1条回答
网友
1楼 · 发布于 2024-04-19 21:58:32

IIUC,您应该将startstop时间转换为epoch,以便能够执行查询。为此,您可以:

start_epoch = (start - datetime.datetime(1970,1,1)).total_seconds()
stop_epoch = (stop - datetime.datetime(1970,1,1)).total_seconds()

然后您应该能够使用它们执行查询。使用您的数据:

In [24]: (start - datetime.datetime(1970,1,1)).total_seconds()
Out[24]: 1229905195.15

In [27]: (stop - datetime.datetime(1970,1,1)).total_seconds()
Out[27]: 1229907355.18

编辑:更一般的问题。对于numpydatetime64对象,您可以首先将其转换为纯datetime

In [16]: abc = np.datetime64('2005-12-27 20:10:10.500400300', 'ns')

In [17]: a = pd.to_datetime(abc)

In [18]: a
Out[18]: Timestamp('2005-12-27 20:10:10.500400300')

然后你可以用上面的方法。你知道吗

相关问题 更多 >