我有一个Pandas的
寻找一个非常简洁的一行代码,可以将时间差转换为微秒,并且不对pandas Timedelta列的内部数据类型做任何假设,即使它是int64纳秒。
期望的结果:
我尝试了几种方法。最简洁的方法如下,但它对Timedetla列的内部工作做了一些假设,即它是int64 nsecs,并且需要一个缩放因子1000来正确处理它。
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列的内部数据类型做任何假设,即使它是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
我尝试了几种方法。最简洁的方法如下,但它对Timedetla列的内部工作做了一些假设,即它是int64 nsecs,并且需要一个缩放因子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
tdiff_df['TimeDiff'].dt.unit
来检查单位。我仍然会使用tdiff_df['TimeDiff'].astype(int).floordiv(1000)
,或者根据单位调整缩放因子。" - undefined