为什么Pandas转储Json时会将时间戳转换为巨大的数字?

问题描述 投票:0回答:2

这就是示例 pandas 框架的样子。

第一列的

dtype
datetime64[ns]
。但是当我用
to_json(orient='records')
转换数据框时,这就是我得到的。

 [{"date":1494547200000,"item_nbr":96995,"prediction":85.0903691434},
{"date":1494547200000,"item_nbr":99197,"prediction":110.2331549721},
{"date":1494547200000,"item_nbr":103501,"prediction":179.3874884163},
{"date":1494547200000,"item_nbr":103520,"prediction":150.7441153415},
{"date":1494547200000,"item_nbr":103665,"prediction":163.3215086129}]

那些巨大的数字

date
是多少,它们来自哪里?我尝试使用 unix 时间戳对其进行转换,但即使如此,它也超出了范围。

python json pandas datetime
2个回答
0
投票

date
列转换为
str
以避免转换为毫秒:

>>> df1.astype({'date': str}).to_json(orient='records', indent=2)
[
  {
    "date":"2017-05-12",
    "item_nbr":96995,
    "prediction":85.0903691434
  },
  {
    "date":"2017-05-12",
    "item_nbr":99197,
    "prediction":110.2331549721
  },
  {
    "date":"2017-05-12",
    "item_nbr":103501,
    "prediction":179.3874884163
  },
  {
    "date":"2017-05-12",
    "item_nbr":103520,
    "prediction":150.7441153415
  },
  {
    "date":"2017-05-12",
    "item_nbr":103665,
    "prediction":163.3215086129
  }
]

0
投票

函数

pandas.DataFrame.to_json
有一个参数
date_format{None, 'epoch', 'iso'}
日期转换类型。

  • epoch
    代表纪元毫秒
  • iso
    ISO8601

默认值取决于方向。对于

orient='table'
,默认为
'iso'
。对于所有其他方向,默认值为
'epoch'

更多详情请查看官方文档

© www.soinside.com 2019 - 2024. All rights reserved.