You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 10:05:30