【问题标题】:pandas exporting to TZ time format in .json filepandas 在 .json 文件中导出为 TZ 时间格式
【发布时间】:2020-11-07 19:20:35
【问题描述】:

我目前正在这样做以生成数据框:

 dataframe = pd.read_sql("select date_trunc('minute', log_time) as date, .....

我的输出是这样的时间:

"date":"2020-06-01 00:08:00.000"

我想要做的是在它输出到的 json 文件中有一个看起来像这样的时间输出:

"date":"2020-06-08T23:01:00.000Z

我找到了向您展示如何删除它但不确定如何添加它的文档。在制作数据框后我是否必须这样做,或者我的 date_trun( 命令中是否有一些东西应该以这种格式放置

【问题讨论】:

  • 您的最终目标是什么 - 更改 jupyter notebook 中的格式或将数据输出回 csv、excel、SQL 等?如果您有兴趣更改格式,则可以更改为带有strftime 的字符串:stackabuse.com/how-to-format-dates-in-python
  • 这个数据框将输出到一个 json 。我不知道如何在 df 中操作它,所以我可以做一个 json.dum(df) 并拥有 TZ 格式的时间格式。我可以用 strftime 操作它,但不确定如何在查询中使用 strftime @DavidErickson

标签: pandas dataframe time


【解决方案1】:

根据我们在 cmets 部分的对话,我编辑了您的问题并将 in the JSON file that it is outputted to 添加到 What I want to do is have a time output that looks like this in the JSON file that it is outputted to: 行中 在数据末尾,唯一重要的是原始值在您的 JSON 文件中准确。不用担心它在 Jupyter Notebook 中的样子。我认为这是人们常犯的错误,我过去也犯过这个错误。

我建议不要担心 pandas 中的日期时间格式。只需使用 pandas 的默认日期/时间,直到最后。

那么,作为最后一步,在导出为 JSON 之前,将该字段的格式更改为:

df['TIME'] = pd.to_datetime(df['TIME']).dt.strftime('%Y-%m-%dT%H:%M:%S.%f').str[:-3] + ['Z']

这将更改为2020-06-08T23:01:00.000Z 的格式。

注意.str[:-3] 是必需的,因为根据文档,strftime 不支持毫秒(3 位小数),而仅支持micorseconds(6 位小数)。因此,您需要截断最后 3 位小数以更改为毫秒格式。

TZ 不直接支持该特定格式,所以我做了一点字符串操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2021-06-02
    • 1970-01-01
    • 2016-05-24
    • 2016-12-26
    • 1970-01-01
    • 2020-01-15
    相关资源
    最近更新 更多