起初我还以为那里是由于没有绿色蜱在这里没有正确答案。但正如杰夫在评论中指出的那样,我错了。
无论哪种方式是我的贡献。
首先,很明显,使得datetime.time
成timedelta
df['delta'] = (pd.to_timedelta(df.time2.astype(str)) - pd.to_timedelta(df.time1.astype(str)))
time1 time2 delta
0 13:00:07.294234 13:00:07.294234 00:00:00
1 14:00:07.294234 14:00:07.394234 00:00:00.100000
2 15:00:07.294234 15:00:07.494234 00:00:00.200000
3 16:00:07.294234 16:00:07.694234 00:00:00.400000
现在我们有timedelta
我们可以简单地通过一微秒除以它获得的微秒数。
df['microsecond_delta'] = df.delta/pd.np.timedelta64(1, 'us')
time1 time2 delta microsecond_delta
0 13:00:07.294234 13:00:07.294234 00:00:00 0
1 14:00:07.294234 14:00:07.394234 00:00:00.100000 100000
2 15:00:07.294234 15:00:07.494234 00:00:00.200000 200000
3 16:00:07.294234 16:00:07.694234 00:00:00.400000 400000
我必须补充一点,这是非常直观的,但它似乎是唯一的方法。似乎没有办法直接访问毫秒。我通过应用lambda函数类似的尝试:
df.delta.apply(lambda x: x.microseconds)
AttributeError: 'numpy.timedelta64' object has no attribute 'microseconds'
同样是seconds
,nanoseconds
,milliseconds
等真的...
还可以''np.timedelta64分(1, '我们')' ' – Jeff