如何在Polars中基于两个日期时间列创建时间差(delta)列?
解决Polars日期列相减获取天数差的问题
你的代码直接相减日期列得到的是Duration类型(格式类似366d),如果要得到纯数字的天数,需要对相减结果调用.dt.days()方法提取天数数值。
修改后的代码如下:
(pl.from_records([{'start': '2021-01-01', 'end': '2022-01-01'}]) .with_columns(pl.col(['start', 'end']).str.to_date('%Y-%m-%d')) .with_columns(delta = (pl.col('end') - pl.col('start')).dt.days()) )
执行后delta列会返回整数类型的天数差(这里结果为366,因为2021到2022年包含2月29日)。
另外提供两种等效写法供你选择:
- 直接使用Polars内置的
dt.diff_days函数:.with_columns(delta = pl.col('end').dt.diff_days(pl.col('start'))) - 对Duration类型调用
.dt.total_days()(效果和.days()一致):.with_columns(delta = (pl.col('end') - pl.col('start')).dt.total_days())
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

