使用 Polars 解析 tz 感知字符串时如何获取解析后的 tz 偏移量?

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

使用 Polars 解析带有偏移量信息的日期时间字符串时,输出始终采用 UTC 格式:

pl.Series(['2020-01-01T01:00+10:00']).str.to_datetime()
shape: (1,)
Series: '' [datetime[μs, UTC]]
[
        2019-12-31 15:00:00 UTC
]

我认为这样做的原因是不可能表示具有非恒定时区的序列,因此这种行为是处理 [+1, +2, +3] 等输入(其中 DST 更改为一个例子)。

Polars 不想做出模糊的猜测,这很好,但是 我如何安全地得到“+10:00”来自己处理这个问题? (或 [+1, +2 ,+3] 在更困难的情况下。)

chrono
成功地将其解析为偏移量,我如何才能将其作为
pl.Duration
列或其他内容而无需自己从头开始手动进行偏移解析?

python timezone python-polars
1个回答
0
投票

当前可用的唯一选项是使用

map_elements
并在 Python 中进行解析:

from datetime import datetime
import polars as pl

s = pl.Series(['2020-01-01T01:00+10:00', '2024-03-02T03:12-14:00'])
def func(row):
    parsed = datetime.strptime(row, '%Y-%m-%dT%H:%M%z')
    return parsed.tzinfo.utcoffset(parsed)

s.map_elements(func, return_dtype=pl.Duration)
shape: (2,)
Series: '' [duration[μs]]
[
        10h
        -14h
]
© www.soinside.com 2019 - 2024. All rights reserved.