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

如何将Pandas Timedelta列转换为微秒(单行简洁实现)

如何将Pandas Timedelta列转换为微秒(不依赖内部存储类型)

我有一个Pandas Timedelta列,可通过以下代码创建:

import pandas as pd
tdelta_ser = pd.date_range(start='00:00:00', periods=3, freq='700ms') - pd.date_range(start='00:00:00', periods=3, freq='500ms') 
tdiff_df = pd.DataFrame(tdelta_ser, columns=['TimeDiff'])
print(tdiff_df)

运行输出:

TimeDiff
0        0 days 00:00:00
1 0 days 00:00:00.200000
2 0 days 00:00:00.400000

我需要一行简洁的代码,生成一个新列,将该时间差转换为微秒,且无需假设Pandas Timedelta列的内部dtype为int64纳秒。

期望结果:

TimeDiff  DiffUsec
0        0 days 00:00:00         0
1 0 days 00:00:00.200000    200000
2 0 days 00:00:00.400000    400000

我尝试过几种方法,其中最简洁的如下,但它依赖于Timedelta列内部为int64纳秒的假设,还需要除以1000的缩放因子,且结果为浮点数:

tdiff_df['DiffUsec'] = tdiff_df['TimeDiff'].astype('int64') / 1000
print(tdiff_df)

运行输出:

TimeDiff  DiffUsec
0        0 days 00:00:00       0.0
1 0 days 00:00:00.200000  200000.0
2 0 days 00:00:00.400000  400000.0

解决方案

使用Pandas Timedelta的.dt.total_seconds()方法,将总秒数转换为微秒后转为整数,完全不依赖内部存储类型:

tdiff_df['DiffUsec'] = (tdiff_df['TimeDiff'].dt.total_seconds() * 1_000_000).astype(int)

运行后得到期望的结果:

TimeDiff  DiffUsec
0        0 days 00:00:00         0
1 0 days 00:00:00.200000    200000
2 0 days 00:00:00.400000    400000

内容的提问来源于stack exchange,提问作者Gerard G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:20:15