python - Pandas 通过多个正则表达式捕获组创建多个列

标签 python regex pandas multiple-columns

我在数据框中有一列,如下所示:

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/

相关文章:

python - scipy stats 几何平均返回 NaN

python - 正则表达式匹配到以 `- [` 开头的最后一行

python - 用相对于其他四分位数的四分位数替换 DF 中的值

python - tensorflow 中二维数组最小值到最大值的排序

python - 基于数字模式的增量列表

regex - Powershell 使用正则表达式创建新的哈希表对象

javascript - 正则表达式:如何重复模式匹配?

python - 使用 pandas 创建特定过滤器

python - Pandas/Matplotlib 在一列上进行注释并在另一列上添加标签

python - 使用 pandas 的 TimeGrouper() 以 1 秒为间隔查找列数