【发布时间】:2021-01-28 05:02:11
【问题描述】:
假设我有一个包含两列的数据框,一个简单的日期,它是对应的时区。我想使用第二列将天真日期转换为时区感知日期。
| naive_date | timezone |
|---|---|
| 24-01-2021 05:00:00 | 'Europe/London' |
| 24-01-2021 06:00:00 | 'Europe/Amsterdam' |
| 24-01-2021 00:00:00 | 'US/Eastern' |
如果我只想转换为已知时区,我会这样做:
df['naive_date'].dt.tz_localize(tz='Europe/London')
但是如果传递给 tz 的值应该取自特定行的时区列怎么办?那可能吗?我试过了,不出所料没有用:
df['naive_date'].dt.tz_localize(tz=df['timezone'])
对于上下文,我会将日期与另一个时区感知日期列进行比较,当比较天真与时区感知日期时间时,比较返回 false。
【问题讨论】:
-
我通常使用 df.apply(convert_my_tz, axis='columns') 来执行此操作,您愿意使用 apply,还是希望使用矢量化关联?
-
df.apply(lambda x: x['naive_date'].dt.tz_localize(tz=x['timezone']), axis = 1)? (我没有测试过) -
谢谢两位,我会考虑使用 apply,它看起来很有希望!