如何检查5行熊猫的每个值连续相同

问题描述

我有两个数据帧,其中df1列'A'的值在5行中相同,然后更改,然后在接下来的5行中相同,df2列'A'的值是随机的,没有连续的相同值。

如果要检测到df1条件flag == 1,并且当要检测到df2条件flag == 0时,我想使用np.where()来标记

这里需要找到一种方法,即在检测到连续值时检测标志1,而在数据帧中未检测到连续值时检测标志0。

df1=pd.DataFrame({'A':[1,1,8,15,15]})-------> flag==1
df2=pd.DataFrame({'A':[1,3,4,7,11,20,16,87]})-----flag==0

解决方法

IIUC,您可以使用pd.Series.shift并检查是否等于pd.Series.cumsum,然后将GroupBy.sizepd.Series.eq一起使用,最后使用pd.Series.any

g = df1['A'].ne(df1['A'].shift()).cumsum()
flag = df1.groupby(g).size().eq(5).any()# if you want consider consecutive elements
# True                                  # greater than equal to 5 replace `.eq` with `.ge`

g1 = df2['A'].ne(df2['A'].shift()).cumsum()
flag2 = df2.groupby(g1).size().eq(5).any()
# False

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...