使用 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?