相关文章推荐

如何在5行中检查每个值是否连续相同 pandas

0 人关注

我有两个数据框架,一个df1列'A'的值在5行中是相同的,然后改变,再接下来的5行中也是相同的,df2列'A'的值是随机的,没有连续的相同值。

我想用np.where()在检测到df1条件时给出flag==1,在检测到df2条件时给出flag==0。

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

df1=pd.DataFrame({'A':[1,1,1,1,8,8,8,8,8,15,15,15]})-------> flag==1
df2=pd.DataFrame({'A':[1,3,4,7,8,11,1,15,20,15,16,87]})-----flag==0
    
3 个评论
any(np.diff(df1.A.values)==0)
这是否回答了你的问题? 识别一个值的连续出现
python
pandas
numpy
pandas-groupby
Nickel
Nickel
发布于 2020-08-12
1 个回答
Ch3steR
Ch3steR
发布于 2020-08-12
已采纳
0 人赞同

你可以使用 pd.Series.shift 并检查是否平等和 pd.Series.cumsum , then use GroupBy.size with pd.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`
 
推荐文章