使用正则表达式python迭代数据帧

使用正则表达式python迭代数据帧,python,regex,dataframe,Python,Regex,Dataframe,我正在尝试解析DF或列表中另一列中的SI类型模式 我尝试了两件事: | a | -------------------+ | Builder | | left | | SI_NAME lide_on | | SI_ID 456 | | Scheduling Info | df['b']= df['a'].apply(lambda row: re.findall('\SI_\w+\s',row)) 及

我正在尝试解析DF或列表中另一列中的SI类型模式 我尝试了两件事:

|    a             |
-------------------+
| Builder          |
| left             |
| SI_NAME lide_on  |
| SI_ID 456        |
| Scheduling Info  |

df['b']= df['a'].apply(lambda row: re.findall('\SI_\w+\s',row))  


我无法获得结果,第一个结果在新列中返回了一个空列表

您可以使用

df['b'] = df['a'].str.findall(r'^SI_\w+')
使用
.str
将强制将内容解析为字符串


^SI\uw+
模式匹配
SI
,然后仅在字符串开头添加1+字字符(由于
^
)-看起来您要查找的条目遵循此模式。您可以在最后添加
.apply(','.join)
或类似的内容来获取结果列中的字符串数据。

注意
\S
匹配的是非空白,而不是
S
。此正则表达式在一句话中运行良好,在dataframeTry
df['b']=df['a']行上迭代时失败。str.findall(r'^SI\w+“”).apply(“,”.join)
.apply(“,”.join)
是多余的,但只返回字符串)。是的,这很有效,谢谢!,我认为'str'是我所缺少的,在迭代之前,行没有被视为字符串。
df['b'] = df['a'].str.findall(r'^SI_\w+')