【发布时间】:2021-10-26 14:43:07
【问题描述】:
假设数据框 (df) 由 3 列组成。
V1 V2 V3
1 0 days 23:09:00 0 days 23:34:00
1 0 days 23:36:00 1 days 00:03:00
1 1 days 00:06:00 1 days 00:29:00
1 1 days 00:31:00 1 days 00:57:00
2 0 days 22:40:00 0 days 23:04:00
2 0 days 23:09:00 0 days 23:35:00
2 0 days 23:37:00 1 days 00:01:00
2 1 days 00:06:00 1 days 00:30:00
2 1 days 00:33:00 1 days 00:56:00
3 0 days 22:50:00 0 days 23:21:09
3 0 days 23:38:56 1 days 00:09:00
3 1 days 00:12:00 1 days 00:42:09
我使用了以下代码:
df['V4']=(df.groupby('V1')['V3'] - df.groupby('V1')['V2'].shift(1)).astype('timedelta64[m]')
本质上,我想对 V1 中的每个唯一值执行操作,结果应如下所示:
V1 V2 V3 V4
1 0 days 23:09:00 0 days 23:34:00 NaN
1 0 days 23:36:00 1 days 00:03:00 54
1 1 days 00:06:00 1 days 00:29:00 53
1 1 days 00:31:00 1 days 00:57:00 51
2 0 days 22:40:00 0 days 23:04:00 NaN
2 0 days 23:09:00 0 days 23:35:00 55
2 0 days 23:37:00 1 days 00:01:00 52
2 1 days 00:06:00 1 days 00:30:00 53
2 1 days 00:33:00 1 days 00:56:00 50
3 0 days 22:50:00 0 days 23:21:09 NaN
3 0 days 23:38:56 1 days 00:09:00 79
3 1 days 00:12:00 1 days 00:42:09 63
收到错误:
无法在 TimedeltaArray 中添加/减去非刻度 DateOffset
数据类型:
{'V1': {1: 1, 2: 2, 3: 3}, 'V2': {0: Timedelta('0 days 23:09:00'), 1: Timedelta('0 days 23:36:00')}, 'V3': {0: Timedelta('0 days 23:34:00'), 1: Timedelta('1 days 00:03:00')}, 'V4': {0: 54, 1: 53}}
【问题讨论】:
-
提供了样本df。
-
您提供的代码没有给出您在示例中使用的
df。能不能把原来的df加进去之前你对它做任何操作? -
它的 GTFS 数据。那么我如何证明 GTFS 数据呢?
-
我已经提供了数据框。不确定这是否是您要求的
-
它在代码中。它的减法
标签: python pandas datetime timedelta