如何用Polars原生方法转换毫秒级Unix时间戳为日期?求Python/Rust方案
Python 环境下的 Polars 原生解决方案
Polars 内置了pl.from_epoch()函数,可直接批量转换毫秒级Unix时间戳,无需转Pandas或逐行循环:
- 转换为
datetime类型:
import polars as pl # 示例DataFrame df = pl.DataFrame({"timestamp": [1620000000000, 1630000000000, 1640000000000]}) # 毫秒时间戳转datetime df = df.with_columns( pl.from_epoch("timestamp", unit="ms").alias("datetime") )
- 若只需
YYYY-MM-DD格式的日期,可进一步提取日期部分:
df = df.with_columns( pl.from_epoch("timestamp", unit="ms").dt.date().alias("date") )
Rust 环境下的 Polars 原生解决方案
Polars Rust API 同样支持高效批量转换,无需逐行处理,利用from_epoch结合时间单位参数即可实现:
先确保依赖配置:
[dependencies] polars = { version = "0.37", features = ["time", "lazy"] } chrono = "0.4"
转换实现代码:
use polars::prelude::*; use chrono::Duration; fn main() { // 示例DataFrame let timestamp_col = Series::new("timestamp", &[1620000000000i64, 1630000000000i64, 1640000000000i64]); let mut df = DataFrame::new(vec![timestamp_col]).unwrap(); // 毫秒时间戳转datetime类型 let datetime_col = df.column("timestamp") .unwrap() .i64() .unwrap() .from_epoch(Duration::milliseconds(1)) .alias("datetime"); df.with_column(datetime_col).unwrap(); // 提取日期部分(YYYY-MM-DD) let date_col = df.column("datetime") .unwrap() .datetime() .unwrap() .date() .alias("date"); df.with_column(date_col).unwrap(); }
内容的提问来源于stack exchange,提问作者tenxsoydev
相关产品推荐
相关产品推荐

