将 pandas df 转换为 json 然后解析日期

亨利中心

我有一个像下面这样的pandas df,带有一个Time Block索引列和Payload一个int列:

    Payload
Time Block  
2021-08-20 00:00:00 1
2021-08-20 00:15:00 2
2021-08-20 00:30:00 3
2021-08-20 00:45:00 4
2021-08-20 01:00:00 5

Pandas转json,好像自动转换成纪元时间:

result = df.to_json(orient="index")

看起来像这样:

'{"1629417600000":{"Payload":1},"1629418500000":{"Payload":2},"1629419400000":{"Payload":3},"1629420300000":{"Payload":4},"1629421200000":{"Payload":5}}`

解析json数据:

import json

parsed = json.loads(result)

看起来像这样:

{'1629417600000': {'Payload': 1},
 '1629418500000': {'Payload': 2},
 '1629419400000': {'Payload': 3},
 '1629420300000': {'Payload': 4},
 '1629421200000': {'Payload': 5}}

我无法弄清楚的是如何将原始时间块列转换回日期时间?

例如,第一个日期是 1629417600000,如果我尝试:

from datetime import datetime


epoch_time = 1629417600000
datetime_time = datetime.fromtimestamp(epoch_time)

这将引发错误 OSError: [Errno 22] Invalid argument

解析json数据后,Pandas时间块列有什么应该做的吗?

如果我做:

import time

time.time()

看起来像下面这样与熊猫如何将我的日期时间索引打包到 json 有点不同:

1629571434.5085876

time.time() 也解析得很好,如下所示。

epoch_time = time.time()
datetime_time = datetime.fromtimestamp(epoch_time)

非常感谢任何提示。这几乎就像我需要将我的 Pandas 纪元值除以 1000,但我不完全确定如何计算纪元时间以知道这是否可行。

not_speshal

该函数fromtimestamp以秒为输入,您提供毫秒。

除以 1000 正是您需要做的(并且会根据需要工作)。但是,您可能需要使用该utcfromtimestamp函数:

  • fromtimestamp 为您提供当地时间的日期和时间
  • utcfromtimestamp 为您提供 UTC 日期和时间。
from datetime import datetime
>>> [datetime.utcfromtimestamp(int(ts)/1000) for ts in parsed]
[datetime.datetime(2021, 8, 20, 0, 0),
 datetime.datetime(2021, 8, 20, 0, 15),
 datetime.datetime(2021, 8, 20, 0, 30),
 datetime.datetime(2021, 8, 20, 0, 45),
 datetime.datetime(2021, 8, 20, 1, 0)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章