在数据帧中查找连续出现的字符串?

2024-05-23 16:27:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据帧:

  log_alerts 
0         no   
1        yes    
2        yes   
3         no    
4        yes   
5        yes
6        yes
7        yes

我试图在logu alerts列中找到连续出现的yes,第三次,代码应该会提示。你知道吗

预期产量:

  log_alerts    message
0         no   none
1        yes   none
2        yes   none
3         no   none
4        yes   none
5        yes   none
6        yes   continuity found
7        yes   Review again

我怎样才能做到这一点?你知道吗

可以用熊猫图书馆吗?你知道吗


Tags: 数据no代码nonelogmessage图书馆review
1条回答
网友
1楼 · 发布于 2024-05-23 16:27:16

我相信你需要:

  • 首先通过比较^{}ed列和^{}来区分组
  • 只筛选yes
  • ^{}获取每个组的计数,并为Series添加^{},索引与原始DataFrame相同
  • 上一次通过^{}创建新列

a = df['log_alerts'].ne(df['log_alerts'].shift()).cumsum()
a = a[df['log_alerts'] == 'yes']
counts = a.groupby(a).cumcount().reindex(df.index, fill_value=0)
print (counts)
0    0
1    0
2    1
3    0
4    0
5    1
6    2
7    3
dtype: int64

masks = [counts == 2, counts > 2]
df['message'] = np.select(masks, ['continuity found','Review again'], default=None)
print (df)
  log_alerts           message
0         no              None
1        yes              None
2        yes              None
3         no              None
4        yes              None
5        yes              None
6        yes  continuity found
7        yes      Review again

详细信息:

print (type(a))
<class 'pandas.core.series.Series'>

print (a)
1    2
2    2
4    4
5    4
6    4
7    4
Name: log_alerts, dtype: int32

相关问题 更多 >