gpt4 book ai didi

python - 分组数据帧中的高效循环以访问当前和先前索引的值(并计算差异)

转载 作者:行者123 更新时间:2023-11-28 20:58:04 24 4
gpt4 key购买 nike

我有一个大数据框,如下所示。数据按id后跟OnTime排序

    id  OnTime              OffTime
0 1 2017-08-01 09:38:17 2017-08-01 09:49:31
1 1 2017-08-01 09:53:15 2017-08-01 09:54:50
2 1 2017-08-01 09:57:29 2017-08-01 10:10:42
3 2 2017-08-01 09:02:00 2017-08-01 09:27:15
4 2 2017-08-01 09:29:15 2017-08-01 09:43:41

如果 ID 相同,我需要计算当前 OnTime 和之前 OffTime 之间的时间差。 (这种差异称为timeSince)

正在寻找一种在 Python 中执行此操作的有效方法。数据框有大约 40 万行。我想过按 ids 分组,我不完全确定如何迭代和计算时差。

输出应该如下所示:

timeSince
-1 #since this is the 1st row of ID 1 no previous OffTime exists
3.7333333333333334
2.65
-1 #since this is the 1st row of ID 2 no previous OffTime exists
2.0

最佳答案

使用 GroupBy + lambda 很诱人,但不是必须的:

df['timeSince'] = (df['OnTime'] - df.groupby('id')['OffTime'].shift())
df['timeSince'] = (df['timeSince'] / np.timedelta64(1, 'm')).fillna(-1)

print(df)

OffTime OnTime id timeSince
0 2017-08-01 09:49:31 2017-08-01 09:38:17 1 -1.000000
1 2017-08-01 09:54:50 2017-08-01 09:53:15 1 3.733333
2 2017-08-01 10:10:42 2017-08-01 09:57:29 1 2.650000
3 2017-08-01 09:27:15 2017-08-01 09:02:00 2 -1.000000
4 2017-08-01 09:43:41 2017-08-01 09:29:15 2 2.000000

关于python - 分组数据帧中的高效循环以访问当前和先前索引的值(并计算差异),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52056799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com