Python 如何在二进制数中找到连续1的组数

Python 如何在二进制数中找到连续1的组数,python,pandas,binary,Python,Pandas,Binary,我有一个pandas数据框,它的行中包含1和0。我想计算数据帧中连续1组的数量。我再说一遍,我不是在问连续的1的数量,网上有很多这样的例子 更确切地说: 假设我的pd.DataFrame的行是: index value 0 0 1 1 2 1 3 0 4 0 5 1 6 0 7 1 8 0 9 1 我希望输出为4,将值转换为列表,然后执行以下操作: 这是我的想法,你可能会找到更有效的方法 Countconsecutiveone=0 i=0 prv_is_one=0 Whil

我有一个pandas数据框,它的行中包含1和0。我想计算数据帧中连续1组的数量。我再说一遍,我不是在问连续的1的数量,网上有很多这样的例子

更确切地说:

假设我的pd.DataFrame的行是:

index value
0  0
1  1
2  1
3  0
4  0
5  1
6  0
7  1
8  0
9  1

我希望输出为4,将值转换为列表,然后执行以下操作: 这是我的想法,你可能会找到更有效的方法

Countconsecutiveone=0
i=0
prv_is_one=0
While i<len(Newlist):
 if Newlist[i]==1 and prv_is_one==0:
       Countconsecutiveone+=1
       prv_is_one=1
 elif Newlist[i]==0 and prv_is_one==1:
           prv_is_one=0
 i+=1
CountConcertiveOne=0
i=0
prv_为_one=0
而我也许你可以使用:

或者,如果该键可以是
0
/
1
以外的其他键,或者您希望更加明确:

>>> sum(1 for k, _ in groupby(df['value']) if k == 1)
4
尝试:

只有在开始或结束时没有1时才有效

df['value'].diff().eq(1).sum()
在序列的顶部和底部添加0:

pd.concat([pd.Series([0]), df.value, pd.Series([0])]).diff().eq(1).sum()


非常感谢你!如果你能解释一下这行代码的作用,那就太好了。我对Python有点陌生,您使用的语法对我来说有点陌生..我使用了一种叫做理解的东西,即。同样,确保单击上面的
itertools.groupby
链接。最后,如果没有帮助,你也可以在YouTube/Google/DuckDuckGo/Bing上搜索更多的资源/解释。
pd.concat([pd.Series([0]), df.value, pd.Series([0])]).diff().eq(1).sum()
4