【发布时间】:2021-02-08 15:11:21
【问题描述】:
我想用 pandas 读取 parquet 文件夹内容部分的数据。
我的日期时间日期为 UTC,当我尝试阅读它时,我得到了:
pytz.exceptions.UnknownTimeZoneError: '+00:00'
找不到问题所在。
【问题讨论】:
-
你能分享一些代码吗?
我想用 pandas 读取 parquet 文件夹内容部分的数据。
我的日期时间日期为 UTC,当我尝试阅读它时,我得到了:
pytz.exceptions.UnknownTimeZoneError: '+00:00'
找不到问题所在。
【问题讨论】:
我在使用我通过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。
【讨论】: