如何将日期转换为极坐标中的时区感知日期时间

Dea*_*gor 3 python python-polars

假设我有

\n
df = pl.DataFrame({\n    "date": pl.Series(["2022-01-01", "2022-01-02"]).str.strptime(pl.Date), "%Y-%m-%d")\n})\n
Run Code Online (Sandbox Code Playgroud)\n

如何将其本地化为特定时区并使其成为日期时间?

\n

我试过:

\n
df.select(pl.col('date').cast(pl.Datetime(time_zone='America/New_York')))\n
Run Code Online (Sandbox Code Playgroud)\n

但这给了我

\n
    shape: (2, 1)\n    date\n    datetime[\xce\xbcs, America/New_York]\n    2021-12-31 19:00:00 EST\n    2022-01-01 19:00:00 EST\n
Run Code Online (Sandbox Code Playgroud)\n

所以看起来它是从假设 na\xc3\xafve 日期时间是 UTC 开始的,然后应用转换。我设置了os.environ['TZ']='America/New_York',但得到了相同的结果。

\n

我查看了 API 指南中的 Polars 配置选项,看看是否还有其他需要设置的内容,但找不到有关默认时区的任何信息。

\n

rit*_*e46 8

从 Polars 0.16.3 开始,您可以执行以下操作:

df.select(
    pl.col('date').cast(pl.Datetime).dt.replace_time_zone("America/New_York")
)
Run Code Online (Sandbox Code Playgroud)

在以前的版本中(0.14.24之后),语法是

df.select(
    pl.col('date').cast(pl.Datetime).dt.tz_localize("America/New_York")
)
Run Code Online (Sandbox Code Playgroud)