【问题标题】:Pandas read_parquet pytz.exceptions.UnknownTimeZoneErrorPandas read_parquet pytz.exceptions.UnknownTimeZoneError
【发布时间】:2021-02-08 15:11:21
【问题描述】:

我想用 pandas 读取 parquet 文件夹内容部分的数据。

我的日期时间日期为 UTC,当我尝试阅读它时,我得到了:

pytz.exceptions.UnknownTimeZoneError: '+00:00'

找不到问题所在。

【问题讨论】:

  • 你能分享一些代码吗?

标签: pandas parquet pyarrow


【解决方案1】:

我在使用我通过psycopg2 从数据库获得的 tz 感知时间戳填充 DataFrame 时遇到了这个问题。问题是 Pandas Parquet 代码没有很好地处理来自psycopg2 的时区对象。将数据转换为pytz UTC 解决了这个问题。

这是一个演示:

import datetime as dt
import pandas as pd
from psycopg2.tz import FixedOffsetTimezone

# Simulate getting a timestamp from the DB
psycopg2_utc = FixedOffsetTimezone()
timestamp = dt.datetime.now(psycopg2_utc)

df = pd.DataFrame({'foo': [timestamp]})

df.to_parquet('test1.parquet')
try:
    pd.read_parquet('test1.parquet')
except Exception as e:
    print(f'First load failed: {e}')

# Fix by converting to pytz UTC
df['foo'] = df['foo'].dt.tz_convert('UTC')

df.to_parquet('test2.parquet')
pd.read_parquet('test2.parquet')
print('Second load succeeded')

我已经在 Pandas 提交了an issue

【讨论】:

    猜你喜欢
    • 2021-05-29
    • 1970-01-01
    • 2021-01-28
    • 2019-07-10
    • 1970-01-01
    • 2023-02-07
    • 2018-11-03
    • 2020-01-25
    • 2022-07-26
    相关资源
    最近更新 更多