Python 如何从固定时间中减去datetime列?

Python 如何从固定时间中减去datetime列?,python,pandas,datetime,Python,Pandas,Datetime,我有一个数据帧列,其值范围为12:00到00:00(分:秒格式),我试图从固定的12:00时间(分:秒格式)中减去该列的值。我创建了一个变量: twelve_mins = pd.to_datetime('12:00', format='%M:%S') 当我试图创建一列“剩余时间”时,我得到了错误: unsupported operand type(s) for -: 'Timestamp' and 'datetime.time' 我该怎么做才能找到“剩余时间”值?我要从中减去的列已设置为d

我有一个数据帧列,其值范围为12:00到00:00(分:秒格式),我试图从固定的12:00时间(分:秒格式)中减去该列的值。我创建了一个变量:

 twelve_mins = pd.to_datetime('12:00', format='%M:%S')
当我试图创建一列“剩余时间”时,我得到了错误:

unsupported operand type(s) for -: 'Timestamp' and 'datetime.time'
我该怎么做才能找到“剩余时间”值?我要从中减去的列已设置为datetime格式:

pbp['time_left_in_period'] = pd.to_datetime(pbp['time_left_in_period'], format='%M:%S').dt.time
以下是我的数据的玩具选择:

idx   time_left_in_period
0     00:11:44
1     00:11:44
2     00:11:27
3     00:11:27
4     00:11:23
5     00:11:21
6     00:11:18
7     00:11:02
8     00:10:59
9     00:10:51
10    00:10:51
11    00:10:51
12    00:10:48
13    00:10:48
14    00:10:32
15    00:10:32
16    00:10:21
17    00:10:21
18    00:10:05
19    00:09:56

您可以使用datetime.timedelta()

结果是:

    time_left_in_period     remaining_time
0       00:11:44                00:00:16
1       00:11:44                00:00:16
2       00:11:27                00:00:33
3       00:11:27                00:00:33
4       00:11:23                00:00:37
5       00:11:21                00:00:39
6       00:11:18                00:00:42
7       00:11:02                00:00:58
8       00:10:59                00:01:01
9       00:10:51                00:01:09
10      00:10:51                00:01:09
11      00:10:51                00:01:09
12      00:10:48                00:01:12
13      00:10:48                00:01:12
14      00:10:32                00:01:28
15      00:10:32                00:01:28
16      00:10:21                00:01:39
17      00:10:21                00:01:39
18      00:10:05                00:01:55
19      00:09:56                00:02:04

是否有任何方法可以应用df.diff()方法来查找剩余时间值之间的持续时间?就像第0行是00:00:16(00:00:16-00:00:00),第1行是00:00:00(00:00:16-00:00:16),第2行是00:00:17(00:00:33-00:00:16),依此类推?可以将列设置为diff。比如df['remaining_time']=df['remaining_time']。diff(period=1)
    time_left_in_period     remaining_time
0       00:11:44                00:00:16
1       00:11:44                00:00:16
2       00:11:27                00:00:33
3       00:11:27                00:00:33
4       00:11:23                00:00:37
5       00:11:21                00:00:39
6       00:11:18                00:00:42
7       00:11:02                00:00:58
8       00:10:59                00:01:01
9       00:10:51                00:01:09
10      00:10:51                00:01:09
11      00:10:51                00:01:09
12      00:10:48                00:01:12
13      00:10:48                00:01:12
14      00:10:32                00:01:28
15      00:10:32                00:01:28
16      00:10:21                00:01:39
17      00:10:21                00:01:39
18      00:10:05                00:01:55
19      00:09:56                00:02:04