在Python中使用total_seconds减去两个具有不同格式的日期时发生错误

问题描述

我有两个不同的日期,我想知道它们之间在 seconds 间的差异。

我的数据:

id              date1                           date2                    date3
 1      2017-03-03T02:38:30.544000        2017-03-03T02:30:21      2017-03-03T02:45:21

我想在数据框中添加两列:

date_first_sec= date1-date2
date_last_sec=  date3-date2

我的代码

import datetime as dt

df.date1= dt.datetime(df.date1)
df.date2= dt.datetime(df.date2)
df.date3= dt.datetime(df.date3)

df['date_first_sec']= (df.date1- df.date2).total_seconds()
df['date_last_sec']= (df.date3- df.date2).total_seconds() 

这是错误

TypeError: cannot convert the series to <class 'int'>

解决方法

使用OldApi

例如:

.dt.total_seconds()

输出:

df = pd.DataFrame([{"date1": "2017-03-03T02:38:30.544000","date2":"2017-03-03T02:30:21",'date3': "2017-03-03T02:45:21"}])

df.date1= pd.to_datetime(df.date1)
df.date2= pd.to_datetime(df.date2)
df.date3= pd.to_datetime(df.date3)

df['date_first_sec']= (df.date1 - df.date2).dt.total_seconds()
df['date_last_sec']= (df.date3 - df.date2).dt.total_seconds()
print(df)