Polars 将 Unix 时间戳转换为日期的本机方法

ten*_*dev 5 python datetime pandas rust-polars python-polars

我正在处理一些包含 Unix 纪元(以毫秒为单位)的数据帧,并且希望将整个时间戳系列显示为日期。不幸的是,这些文档没有帮助我找到一个极地本地方法来做到这一点,我正在这里伸出援手。关于如何在 Python 和 Rust 中做到这一点的解决方案会让我的头脑和一天变得明亮。

例如,对于 pandas,这样的事情是可能的:

pd.to_datetime(pd_df.timestamp, unit="ms")
# or to convert the whole col
pd_df.timestamp = pd.to_datetime(pd_df.timestamp, unit="ms")
Run Code Online (Sandbox Code Playgroud)

我可以循环整个过程,并像我在这里为每行中的单个条目所做的那样。

datetime.utcfromtimestamp(pl_df["timestamp"][0] / 1000).strftime("%Y-%m-%d")
Run Code Online (Sandbox Code Playgroud)

如果我要在 Rust 中执行此操作,我会使用 chrono 之类的东西将 ts 转换为日期。但我不认为循环每一行是一个好的解决方案。

目前,我发现帮助我的最好方法是pd_df = pl_df.to_pandas()在 pandas 中进行转换和执行。

rit*_*e46 10

改编@jquurious 的答案。Polarsfrom_epoch为此提供了专门的功能:

\n
(pl.DataFrame({"timestamp": [1397392146866, 1671225446800]})\n   .with_columns(\n       pl.from_epoch("timestamp", time_unit="ms")\n   )\n)\n
Run Code Online (Sandbox Code Playgroud)\n
shape: (2, 1)\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 timestamp               \xe2\x94\x82\n\xe2\x94\x82 ---                     \xe2\x94\x82\n\xe2\x94\x82 datetime[ms]            \xe2\x94\x82\n\xe2\x95\x9e\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1\n\xe2\x94\x82 2014-04-13 12:29:06.866 \xe2\x94\x82\n\xe2\x94\x9c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xa4\n\xe2\x94\x82 2022-12-16 21:17:26.800 \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n