首页 > 解决方案 > pandas.Timedelta 在浮点数中转换为秒太慢

问题描述

我有一个名为 的数据框,_dflen大小为 3.7M,有两pandas.Timestamptimestamplead_timestamp. 我想diff_timestamp在几秒钟内添加一个新列作为两列的差异。

以下片段

_df["diff_timestamp"] = _df.timestamp - _df.lead_timestamp

花费不到 0.1 秒。

但是当我将其修改如下:

_df["diff_timestamp"] = (_df.timestamp - _df.lead_timestamp).map(lambda x: x.seconds)

耗时超过 25 秒,大约长 300 倍。

有没有更有效的方法?

标签: pythonpandasdataframe

解决方案


使用Series.dt.total_seconds

_df["diff_timestamp"] = (_df.timestamp - _df.lead_timestamp).dt.total_seconds()

另一个想法:

_df["diff_timestamp"] = (_df.timestamp - _df.lead_timestamp) / np.timedelta64(1, 's')

推荐阅读