python - 如何使用Python在数据框中查找特定单词后跟数字
问题描述
我有一个包含一系列模式的数据框。
示例数据框:
mydata:
[ 'Ticket number INS 00909',
'Ticket number INS00909',
'Ticket number REQ 8776',
'Ticket number REQ#8777',
'Ticket number REQ #8778',
'Ticket number REQ8778',
'Number is CR 0098445554',
'No INS number',
'No REQUEST',
'DESCRIBED']
Search_Values = ['INS', 'REQ', 'CR' ]
pattern = '|'.join(Search_Values)
df['check'] = df['mydata'].str.contains(pattern)
基本上,我只想查找和提取票号。应该应用什么逻辑来拉取 CR、REQ、INS 后跟数字?有时字符串会在 Req 和 number 之间包含特殊字符,如 #、-、:、*、空格(\s)。有人可以帮忙吗?
解决方案
这将为您提供一个新的 df 列。mydata 字符串的索引用于仅包含您想要的信息的切片。最后一个 if/else 块检查字符串中是否有数字以避免附加误报匹配。
order_list = []
for idx, row in df.iterrows():
if 'INS' in row['mydata']:
index = row['mydata'].index('INS')
elif 'REQ' in row['mydata']:
index = row['mydata'].index('REQ')
elif 'CR' in row['mydata']:
index = row['mydata'].index('CR')
if any(map(str.isdigit, row['mydata'])):
order_list.append(row['mydata'][index:])
else:
order_list.append('')
df['order'] = order_list
print(df)
mydata order
0 Ticket number INS 00909 INS 00909
1 Ticket number INS00909 INS00909
2 Ticket number REQ 8776 REQ 8776
3 Ticket number REQ#8777 REQ#8777
4 Ticket number REQ #8778 REQ #8778
5 Ticket number REQ8778 REQ8778
6 Number is CR 0098445554 CR 0098445554
7 No INS number
8 No REQUEST
9 DESCRIBED
推荐阅读
- google-app-maker - 谷歌应用程序制造商:如何列出现有组?
- java - 如何确定列表中是否有提供总和的 2 个元素?
- python - 如何将 Lambda 层作为输入层添加到 Keras 中的现有模型中?
- python - 在 matplotlib 中使用数组制作滑块
- linux - X86_64 汇编代码段错误并给出堆栈粉碎错误
- java - 在 Kubernetes 中找不到客户端会话 ID
- java - Apk 未正确构建
- deployment - DigitalOcean - 在预编译资产上限制登台部署错误
- java - 在 SpringSecurity 中未调用自定义 UserDetailsService Impl
- sql - sqlopenresult' status='-239' / cognos 报错