计算Pandas连续两行的时间差

2024-06-17 15:06:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据帧如下

Dev_id     Time
88345      13:40:31
87556      13:20:33
88955      13:05:00
.....      ........
85678      12:15:28

上面的数据帧有83000行。我希望获取两个连续行之间的时间差,并将其保存在单独的列中。期望的结果是

^{pr2}$

我尝试过df['Time_diff'] = df['Time'].diff(-1),但得到的错误如下所示

TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'

如何解决这个问题


Tags: 数据deviddfdatetimetimetype错误
2条回答

问题是pandas需要datetimes或timedeltas作为diff函数,因此首先通过^{}进行转换,然后得到^{}并除以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_diff
0   88345  13:40:31  19.966667
1   87556  13:20:33  15.550000
2   88955  13:05:00  49.533333
3   85678  12:15:28        NaN

如果想要^{}或{a4}每分钟:

^{pr2}$

您应该首先将df['Time']列转换/转换为pd.Timedelta,然后执行减法

相关问题 更多 >