gpt4 book ai didi

python - Pandas - 合并具有短间隔的开始/结束时间范围

转载 作者:行者123 更新时间:2023-12-04 11:58:29 25 4
gpt4 key购买 nike

假设我有一系列给定事件的开始和结束时间:

np.random.seed(1)
df = pd.DataFrame(np.random.randint(1,5,30).cumsum().reshape(-1, 2), columns = ["start", "end"])

start end
0 2 6
1 7 8
2 12 14
3 18 20
4 24 25
5 26 28
6 29 33
7 35 36
8 39 41
9 44 45
10 48 50
11 53 54
12 58 59
13 62 63
14 65 68
我想合并间隔小于或等于 n 的时间范围,所以对于 n = 1结果将是:
fn(df, n = 1)

start end
0 2 8
2 12 14
3 18 20
4 24 33
7 35 36
8 39 41
9 44 45
10 48 50
11 53 54
12 58 59
13 62 63
14 65 68
我似乎找不到用 pandas 做到这一点的方法无需逐行迭代和构建结果。有没有更简单的方法来做到这一点?

最佳答案

您可以减去移位的值,通过 N 进行比较对于掩码,按累积总和创建组并传递给 groupby用于聚合 maxmin :

N = 1
g = df['start'].sub(df['end'].shift())

df = df.groupby(g.gt(N).cumsum()).agg({'start':'min', 'end':'max'})
print (df)
start end
1 2 8
2 12 14
3 18 20
4 24 33
5 35 36
6 39 41
7 44 45
8 48 50
9 53 54
10 58 59
11 62 63
12 65 68

关于python - Pandas - 合并具有短间隔的开始/结束时间范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68358218/

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