gpt4 book ai didi

python-3.x - 如何在特定序列第一次出现之前识别序列和索引号

转载 作者:行者123 更新时间:2023-12-02 18:51:05 25 4
gpt4 key购买 nike

我在 pandas 中有一个数据框,下面提供了一个示例:

Person  appear_1   appear_2   appear_3   appear_4   appear_5  appear_6   
A 1 0 0 1 0 1
B 1 1 0 0 1 0
C 1 0 1 1 0 0
D 1 1 0 1 0 0

如您所见,1 和 0 随机出现在不同的列中。如果有人可以建议我用 python 编写一段代码,这样我就可以计算在第一次出现 1、0 和 0 之前出现“1”的次数,这将会很有帮助。例如,对于成员A,第一个双零事件发生在appear_2和appear_3,因此持续时间将为1。同样,对于成员B,第一个双零事件发生在appear_3和appear_4,因此总共有两个1,发生在此之前。所以,在统计1的总数时,1,0,0序列中包含的1也被考虑在内。因为1表示一个人开始了这个过程,而0,0表示他/她连续两次缺席。启动该过程后。结果表应该有一个新列“duration”,如下所示:

Person  appear_1   appear_2   appear_3   appear_4   appear_5  appear_6  duration   
A 1 0 0 1 0 1 1
B 1 1 0 0 1 0 2
C 1 0 1 1 0 0 3
D 1 1 1 1 0 0 4

提前谢谢您。

最佳答案

这里有一点逻辑,首先我们使用rolling sum找到等于0的值,然后我们只需要执行cumprod一次它命中了 0,prod 将返回 0,然后我们只需对每一行的所有非 0 值进行求和即可得到结果

s=df.iloc[:,1:]
s1=s.rolling(2,axis=1,min_periods=1).sum().cumprod(axis=1)
s.mask(s1==0).sum(1)
Out[37]:
0 1.0
1 2.0
2 3.0
3 4.0
dtype: float64

关于python-3.x - 如何在特定序列第一次出现之前识别序列和索引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58964988/

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