python - 导入 Pandas 时保留 KDB 长纪元时间

标签 python pandas kdb epoch pyq

我有 KDB 的纪元时间,例如530782044475144833。但是我在 Pandas 中使用过的任何数据类型,例如int、float64 严重舍入为 5.31e+17,使其毫无用处。读入 Pandas 时如何保留 KDB 纪元时间的整个长度?提前致谢。

最佳答案

PyQ 的最新 (> 4.0) 版本中,kdb+时间戳向量可以轻松转换为numpy数组。例如:

>>> p = q('2#.z.P')
>>> p
k('2017.07.05D13:37:41.058130000 2017.07.05D13:37:41.058130000')
>>> p.long
k('552577061058130000 552577061058130000')
>>> a = np.array(p)
>>> a
array(['2017-07-05T13:37:41.058130000', '2017-07-05T13:37:41.058130000'], dtype='datetime64[ns]')

这会自动进行纪元转换并且不会丢失任何精度

>>> p == a
True

结果数组可以转换为 panda 的 DatetimeIndex:

>>> pd.DatetimeIndex(a)
DatetimeIndex(['2017-07-05 13:37:41.058130', '2017-07-05 13:37:41.058130'], dtype='datetime64[ns]', freq=None)

或放置在DataFrame中:

>>> pd.DataFrame({'timestamp':a})
                   timestamp
0 2017-07-05 13:37:41.058130
1 2017-07-05 13:37:41.058130

关于python - 导入 Pandas 时保留 KDB 长纪元时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40344095/

相关文章:

python - 如何在两个不同的列上合并两个 pandas 数据框,这些列的元素不按顺序排列?

Python - 在日志文件中查找特定的 mac 地址

python - 将一串空格分隔的单词拆分为多行

kdb - KDB+ 中具有多个值列的数据透视表

kdb - 如何从 KDB 的列表中删除元素?

Python 正则表达式 : find all words/phrases within a querystring containing OR and AND

python - GridSearch sklearn 上的参数感知评分函数

在散点图中绘制最小二乘线

python - 如何将 pandas 中的标题行转换为普通行

kdb - 何时需要双引号来创建 KDB/q 符号?