【问题标题】:Can I change the default timestamp interpretation in pandas read_json我可以更改 pandas read_json 中的默认时间戳解释吗
【发布时间】:2017-12-04 17:25:12
【问题描述】:

我有一个带有不幸命名为“时间戳”字段的 JSON 数据文件。时间戳格式为 "%y%m%d%H%M%S",但 pandas.json_read() 将其解释为 UNIX 纪元时间戳,因此该字段被解释为 1975 年的某个时间。

有没有办法覆盖 read_json 行为以提供格式说明符 - 类似于 pandas.to_json(...,date_format="...")) 所做的?

import StringIO
import pandas as pd
my_json_data='''[
  {
    "itemId": "alpha:136:1",
    "testTime": 12.449,
    "workTime": 152.5,
    "project": "alpha",
    "user": "user100021-su7d",
    "timestamp": "170520161430",
    "accuracy": 1
  },
  {
    "itemId": "alpha:136:10",
    "testTime": 4.114,
    "workTime": 152.5,
    "project": "alpha",
    "user": "user100021-su7d",
    "timestamp": "170520161430",
    "accuracy": 0.8890000000000001
  },
  {
    "itemId": "alpha:136:100",
    "testTime": 5.114,
    "workTime": 43.4,
    "project": "alpha",
    "user": "user100021-su7d",
    "timestamp": "170522150338",
    "accuracy": 0.875
  }
]
'''

my_df = pd.read_json(StringIO.StringIO(my_json_data))
my_df["timestamp"]

输出是:

0   1975-05-28 14:42:41.430
1   1975-05-28 14:42:41.430
2   1975-05-28 15:15:50.338
Name: timestamp, dtype: datetime64[ns]

【问题讨论】:

    标签: python json pandas timestamp


    【解决方案1】:

    很遗憾,我在 Pandas 文档中找不到类似的选项,但这种解决方法应该可以:

    my_df = pd.read_json(StringIO.StringIO(my_json_data),convert_dates = False)
    my_df['timestamp'] = pd.to_datetime(my_df['timestamp'],format='%y%m%d%H%M%S')
    print my_df["timestamp"]
    

    我只是要求 pandas 在读取 JSON 时不要将字符串处理为日期时间,然后稍后通过提供格式手动执行此操作。这应该会正确显示日期。

    【讨论】:

    • 谢谢 - 这确实完成了我想要的。不过,这似乎是应该通过转换选项允许的。
    猜你喜欢
    • 2015-06-18
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 2021-04-12
    相关资源
    最近更新 更多