[英]How to convert Date to timezone aware datetime in polars
假設我有
df = pl.DataFrame({
"date": pl.Series(["2022-01-01", "2022-01-02"]).str.strptime(pl.Date), "%Y-%m-%d")
})
如何將其本地化到特定時區並使其成為日期時間?
我試過:
df.select(pl.col('date').cast(pl.Datetime(time_zone='America/New_York')))
但這給了我
shape: (2, 1)
date
datetime[μs, America/New_York]
2021-12-31 19:00:00 EST
2022-01-01 19:00:00 EST
所以看起來它是從假設天真的日期時間是 UTC 然后應用轉換開始的。 我設置了os.environ['TZ']='America/New_York'
但我得到了相同的結果。
我查看了 API 指南中的 polars 配置選項,看看是否還有其他要設置的內容,但找不到有關默認時區的任何信息。
在當前可用的 polars 版本中,這有點乏味。 Polars 日期時間存儲為“UTC”時間戳,因此我們必須進行一些時區處理以使它們與紐約時間一致。
df.select(
pl.col('date').cast(pl.Datetime)
.dt.with_time_zone("America/New_York")
.dt.cast_time_zone("UTC")
.dt.with_time_zone("America/New_York")
)
shape: (2, 1)
┌────────────────────────────────┐
│ date │
│ --- │
│ datetime[μs, America/New_York] │
╞════════════════════════════════╡
│ 2022-01-01 00:00:00 EST │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ 2022-01-02 00:00:00 EST │
└────────────────────────────────┘
這顯然不是很好,所以在下周發布的 polars 0.14.24
中,我們可以使用tz_localize
表達式。
df.select(
pl.col('date').cast(pl.Datetime).dt.tz_localize("America/New_York")
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.