如何在Polars中直接通过年、月、日列构造日期列?
直接从年/月/日列构造Polars日期列
我有如下Polars DataFrame:
import polars as pl df = pl.DataFrame({'year': [2023], 'month': [2], 'day': [1]})
需要从year、month和day三列构造一个日期列。目前我知道可以通过拼接字符串再解析的方式实现:
df.with_column( pl.concat_str([pl.col('year'), pl.col('month'), pl.col('day')], sep='-') .str.strptime(pl.Date).alias('date') )
但这种方式太绕了,有没有办法直接用这三列构造日期列?比如类似下面这种(无法生效的)写法:
import datetime df.with_column( datetime.date(pl.col('year'), pl.col('month'), pl.col('day')).alias('date') )
当然有更直接的方法,Polars内置了pl.date()矢量化函数,可以直接接收年、月、日的列来生成日期列,无需转字符串。
正确写法如下:
# 基础写法 df.with_column( pl.date(pl.col('year'), pl.col('month'), pl.col('day')).alias('date') )
如果使用Polars 0.18及以上版本,还支持更直观的关键字参数写法:
# 关键字参数写法 df.with_column( pl.date(year='year', month='month', day='day').alias('date') )
这个方法比字符串拼接解析更高效,逻辑也更直接,完全符合需求。
内容的提问来源于stack exchange,提问作者robertdj
相关产品推荐
相关产品推荐

