问题是功能
pandas需要
datetimes或
timedeltas
diff,因此首先要转换为
to_timedelta,然后得到
total_seconds并除以
60:
df['Time_diff'] = pd.to_timedelta(df['Time'].astype(str)).diff(-1).dt.total_seconds().div(60)#alternative#df['Time_diff'] = pd.to_datetime(df['Time'].astype(str)).diff(-1).dt.total_seconds().div(60)print (df) Dev_id Time Time_diff0 88345 13:40:31 19.9666671 87556 13:20:33 15.5500002 88955 13:05:00 49.5333333 85678 12:15:28 NaN
如果需要
floor或
round每分钟:
df['Time_diff'] = (pd.to_timedelta(df['Time'].astype(str)) .diff(-1) .dt.floor('T') .dt.total_seconds() .div(60))print (df) Dev_id Time Time_diff0 88345 13:40:31 19.01 87556 13:20:33 15.02 88955 13:05:00 49.03 85678 12:15:28 NaN