在熊猫数据框列中检测时间差是否为负

时间:2020-01-12 03:42:38

标签: python python-3.x pandas

在下面的代码中如何检测时间差是否为负。我的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

1 个答案:

答案 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.endtimedata.starttime是单个datetime对象,如果它们表示数组或类似数组的对象, datetime个对象(例如,多行的DataFrame),则需要遍历它们。