Python 如何在二进制数中找到连续1的组数
我有一个pandas数据框,它的行中包含1和0。我想计算数据帧中连续1组的数量。我再说一遍,我不是在问连续的1的数量,网上有很多这样的例子 更确切地说: 假设我的pd.DataFrame的行是: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
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