我想使用'diff()'来获取两个连续时间数据的差,以微秒为单位。
但是对于某些数据,当差异为1秒时。我遇到了一些问题,如以下代码所示:
~$ conda update conda
结果为0
当我使用
df = pd.DataFrame({'time':['2019-06-10 16:37:16.319', '2019-06-10 16:37:17.319']})
df['time'] = pd.to_datetime(df['time'])
df['delta'] = df['time'].diff().dt.microseconds
print(df)
结果变为1
答案 0 :(得分:2)
有细微差别。 Timestamp attributes“访问Timedelta或TimedeltaIndex的各个组件”,它们不会转换为该特定频率。属性是定义到下一个单位的,因此Timestamp.dt.microseconds
仅定义为> = 0和<1秒的微秒。
在上面的示例中,时间差恰好为1秒,因此没有微秒的分量。
要获取以毫秒为单位的时差,请使用.dt.total_seconds
并乘以转换。
df['delta'] = df['time'].diff().dt.total_seconds()*10**6
time delta
0 2019-06-10 16:37:16.319 NaN
1 2019-06-10 16:37:17.319 1000000.0