Polars中实现类似pandas.Series.dt.ceil的时间戳向上取整方法
Polars中实现类似Pandas dt.ceil的简洁方法
需求明确:
- 整分钟时间戳保持不变,如
2023-01-01 10:05:00 - 非整分钟时间戳向上取整到下一分钟,如
2023-01-01 10:05:01转为2023-01-01 10:06:00
在Pandas中可以直接用dt.ceil实现:
import polars as pl import datetime df = pl.DataFrame( {"timestamp" :[ datetime.datetime(2023, 1, 1, 10, 5, 0), datetime.datetime(2023, 1, 1, 10, 5, 30), datetime.datetime(2023, 1, 1, 10, 6, 0), datetime.datetime(2023, 1, 1, 10, 6, 1), ] } ) df['timestamp'].to_pandas().dt.ceil('1min')
你目前用的Polars写法确实可行,但其实Polars在0.18.0及以上版本已经支持dt.ceil()方法,完全等价于Pandas的dt.ceil,写法更简洁:
import polars as pl import datetime df = pl.DataFrame( {"timestamp" :[ datetime.datetime(2023, 1, 1, 10, 5, 0), datetime.datetime(2023, 1, 1, 10, 5, 30), datetime.datetime(2023, 1, 1, 10, 6, 0), datetime.datetime(2023, 1, 1, 10, 6, 1), ] } ) # 直接调用dt.ceil完成向上取整 df = df.with_columns(pl.col("timestamp").dt.ceil("1m")) print(df)
运行后输出结果完全符合需求:
┌─────────────────────┐ │ timestamp │ │ --- │ │ datetime[μs] │ ╞═════════════════════╡ │ 2023-01-01 10:05:00 │ │ 2023-01-01 10:06:00 │ │ 2023-01-01 10:06:00 │ │ 2023-01-01 10:07:00 │ └─────────────────────┘
内容的提问来源于stack exchange,提问作者0x26res
相关产品推荐
相关产品推荐

