在下面的代码中如何检测时间差是否为负。我的data
是熊猫数据框。
data['starttime'] = pd.to_datetime(data.starttime, format = '%H:%M:%S.%f') #2014-10-28 21:39:52.654394
data['endtime'] = pd.to_datetime(data.endtime, format = '%H:%M:%S.%f') #2014-10-28 21:37:18.793405
if (data.endtime- data.starttime) < 0: #-1 days +23:57:26.139011
data['timediff'] = (data.endtime- data.starttime)
以上代码未检测到时差是否为负。这让我出错-
TypeError: Invalid comparison between dtype=timedelta64[ns] and int
答案 0 :(得分:2)
data.endtime - data.starttime
给您一个timedelta
对象,您不能将它直接与一个整数进行比较,但是您应该可以做到
duration = data.endtime - data.startime
if duration.total_seconds() < 0:
data['timediff'] = duration
或者直接将两个datetime
对象与
if data.endtime > data.starttime:
data['timediff'] = (data.endtime - data.starttime)
注意-此处的逻辑假定data.endtime
和data.starttime
是单个datetime
对象,如果它们表示数组或类似数组的对象, datetime
个对象(例如,多行的DataFrame
),则需要遍历它们。