首页 > 解决方案 > 如何防止日期时间减法中的第二轮?

问题描述

我正在尝试计算两个重叠的时间戳列之间的减法:

begin                       end                         Duration
2019-10-21 07:48:26.740378  2019-10-21 07:48:28.272688  1.532   
2019-10-21 07:48:26.923764  2019-10-21 07:48:28.449916  1.526   

我设法处理了时间重叠以获得正确的结果,但我遇到了格式问题。当我使用这些时,我得到了这个结果:

df['duration'] = df['duration'].where(~c2, (df['end'] - df['end'].shift()).dt.seconds)

我不明白为什么熊猫将结果四舍五入为零dt.second

Duration
1.532
0.000

但我想:

1.532
0.177

谢谢你的时间 !

标签: pythonpandasdatetime

解决方案


您应该使用total_seconds()(就像datetime直接使用对象时一样):

df['duration'] = df['duration'].where(~c2, (df['end'] - df['end'].shift()).dt.total_seconds())

                        begin                        end  duration
0  2019-10-21 07:48:26.740378 2019-10-21 07:48:28.272688       NaN
1  2019-10-21 07:48:26.923764 2019-10-21 07:48:28.449916  0.177228

推荐阅读