我在数据框中有一列,如下所示:
COMPRA DE MANTENIMIENTO INSUMOS OT:15424 PLACA:TSW894 OC:28826
我想以这种方式创建两个新列:
df[['OT','OC']] = df['FAC_DESC'].str.extract(r'(OT\S*)(OC\S*)')
但不起作用,(两列都填充了 NaN)仅在我仅使用一个捕获组或使用“?”时才起作用在捕获组之间,但只捕获最后一组。我相信我错过了一些东西......
最佳答案
最简单的方法是通过添加 .*
修改您的正则表达式模式以匹配 OT 和 OC 之间的词:
df = pd.DataFrame({"col":["COMPRA DE MANTENIMIENTO INSUMOS OT:15424 PLACA:TSW894 OC:28826"]})
df[['OT','OC']] = df['col'].str.extract(r'(OT\S*).*(OC\S*)')
print (df)
col OT OC
0 COMPRA DE MANTENIMIENTO INSUMOS OT:15424 PLACA... OT:15424 OC:28826
关于python - Pandas 通过多个正则表达式捕获组创建多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60482452/