使用 Python (Pandas) 反序列化 json 文件中的 DateTime 字段

Posted

技术标签:

【中文标题】使用 Python (Pandas) 反序列化 json 文件中的 DateTime 字段【英文标题】:Deserialize DateTime field in json file using Python (Pandas) 【发布时间】:2020-09-11 01:31:22 【问题描述】:

我在 Python 中使用 Pandas 解析一个 json 文件。有一个名为 DateTime 的字段,其中包含以下字符串:1581251737000。有人知道这个 DateTime 字段的格式,以便我可以使用 pandas.to_datetime() 函数对其进行解析吗?

【问题讨论】:

【参考方案1】:

这称为epoch timestamp,以毫秒格式表示,您可以删除尾随的零并将其转换为可读的日期时间,如下所示:

time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1581251737))

【讨论】:

【参考方案2】:

在使用 pandas 时,您可以定义自定义格式来辅助 pd.to_datetime 函数,如下所示:

pd.to_datetime('13000101', format='%Y%m%d', errors='ignore')

在您的情况下,您首先必须通过将单位参数提供为ms 来将此时间戳转换为日期时间戳,我猜您的情况是这样。 我建议您定义自己的格式以避免任何尾随零

默认情况下,pandas 使用YYYY MM DD HH MM SS MSMSMS

查看文档here

【讨论】:

【参考方案3】:

最快的方法是使用 pandas:

import pandas as pd
from datetime import datetime

x = "1581251737000"
pd.to_datetime(x, unit="ms")

#Output
Timestamp('2020-02-09 12:35:37')

您可以使用 strftime 将其转换为您想要的格式:

pd.to_datetime(x, unit="ms").strftime("%Y/%m/%d")

#Output
'2020/02/09'

【讨论】:

以上是关于使用 Python (Pandas) 反序列化 json 文件中的 DateTime 字段的主要内容,如果未能解决你的问题,请参考以下文章

如何在 RESTful Flask 应用程序中序列化/反序列化 Pandas DataFrame 到 ProtoBuf/Gzip?

j.net 实现json的序列化与反序列化

Python之序列化和反序列化

python反序列化

Python之路-json和pickle序列化/反序列化

Python —— pickle序列化与反序列化