如何在Polars中将年、月、日多列合并为单个格式化日期列
Pandas日期拼接代码转Polars实现方案
你原来的Pandas按行apply拼接日期的逻辑,在Polars里可以用原生矢量化日期函数实现,完全不需要低效的逐行遍历,性能远高于自定义lambda实现:
基础实现(和原代码效果完全一致)
import polars as pl df = df.with_columns( EVENT_DATE = pl.date("iyear", "imonth", "iday").dt.strftime("%Y-%m-%d") )
可选优化
- 如果你不需要字符串格式,直接存日期类型后续计算更方便,可以去掉
.dt.strftime部分:df = df.with_columns( EVENT_DATE = pl.date("iyear", "imonth", "iday") ) - 如果数据里存在无效的年月日组合(比如月份为0、日期超出当月最大值),可以加
strict=False参数把无效值自动转为null,避免代码运行中断:df = df.with_columns( EVENT_DATE = pl.date("iyear", "imonth", "iday", strict=False).dt.strftime("%Y-%m-%d") )
内容的提问来源于stack exchange,提问作者seb2704
相关产品推荐
相关产品推荐

