gpt4 book ai didi

python - 如何找到多行配对(配对成员之间可能有行)

转载 作者:太空宇宙 更新时间:2023-11-04 09:55:27 24 4
gpt4 key购买 nike

抱歉,我发现问题标题有些含糊,我不确定如何表述问题。希望这个例子能让我清楚地了解我想要做的事情。

我有一个像这样的数据框:

    Time    Event
0 .1 start
1 .2 end
2 .3 start
3 .4 foo
4 .5 bar
5 .6 end

我正在尝试获取相应开始行和结束行的索引(在本例中,是 (0,1) 和 (2,5) 对)。

我不完全确定如何编写此代码的矢量化版本。我可以很容易地在一个循环中完成它,但我正在努力避免它。

可以做出的假设:

-每一个开始都有一个关联的结束

-开始和结束之间可以有其他事件

如有任何帮助,我们将不胜感激。

编辑:我意识到我的问题遗漏了一个关键案例。我可以让一个事件在另一个事件中开始。所以像这样的数据框:

    Time    Event
0 .1 start
1 .2 start
2 .3 end
3 .4 foo
4 .5 bar
5 .6 end

结果应该是 (0,2), (1,5)

我意识到这完全改变了问题的性质。很抱歉没有早点提到它。堆栈是处理此问题的最简单方法吗?

最佳答案

获取两个不同列表中的索引并连接列表以创建元组

start = df[(df['Event'] == 'start')].index
end = df[(df['Event'] == 'end')].index
[(i1, i2) for i1, i2 in zip(start, end) if i1 < i2]

你得到

[(0, 1), (2, 5)]

它将处理任何非偶数对的开始结束。使用更新后的数据框,

    Time    Event
0 .1 start
1 .2 start
2 .3 end
3 .4 foo
4 .5 bar
5 .6 end

这个解决方案给出了

[(0, 2), (1, 5)]

关于python - 如何找到多行配对(配对成员之间可能有行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46062955/

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