我正在try 使用Polars
根据每行中指定的时区来确定时间.请考虑以下代码片段:
df = pl.DataFrame({
"time": [datetime(2023, 4, 3, 2), datetime(2023, 4, 4, 3), datetime(2023, 4, 5, 4)],
"tzone": ["Asia/Tokyo", "America/Chicago", "Europe/Paris"]
}).with_columns(c.time.dt.replace_time_zone("UTC"))
df.with_columns(
tokyo=c.time.dt.convert_time_zone("Asia/Tokyo").dt.hour(),
chicago=c.time.dt.convert_time_zone("America/Chicago").dt.hour(),
paris=c.time.dt.convert_time_zone("Europe/Paris").dt.hour()
)
在本例中,我分别计算了每个时区达到所需结果的时间,即[11,22,6],对应于根据tzone
时区的time
列的小时.即使这样,也很难从正确的专栏中收集信息.
遗憾的是,以下将时区从tzone
列直接动态传递到convert_time_zone
函数的简单try 不起作用:
df.with_columns(c.time.dt.convert_time_zone(c.tzone).dt.hour())
#TypeError: argument 'time_zone': 'Expr' object cannot be converted to 'PyString'
完成这项任务最优雅的方法是什么?