Python和regex新手--我正在try 编写一个代码来替换我的数据框中与特定模式匹配的列中的值.

我的数据框中的一些样本值包括:自雇、退休(自营)

我的模式是--如果该值包含以self-或self-or self(空格)开头的单词[忽略self的大小写],则将整个值替换为"self employeed"

以下是我try 过的方法-

data = pd.read_csv('loan.csv',keep_default_na=False)
data['emp_title']=data['emp_title'].replace('^Self','Self Employed',regex=True)

有两个问题-

  1. 正则表达式似乎不正确.它是找到所有以self开头但不包含的单词.它正在考虑这个词的情况.

  2. 替换函数似乎只替换了单词"self",而不是整个值.例如:如果我的单元格中的值是"自雇",则Python似乎只替换了"自雇",并使该值成为"自雇".

如有任何帮助,我们不胜感激.

推荐答案

您可以更改为此代码:

data = pd.read_csv('loan.csv',keep_default_na=False)
data['emp_title']=data['emp_title'].replace(r'(?i)\bself\b(?:\s*-\s*employed)?(?!\s+Employed\b)', 'Self Employed', regex=True)

RegEx Demo

RegEx Breakup:

  • r'...':原始字符串
  • (?i):忽略大小写模式
  • \bSelf\b:匹配完整单词Self(忽略大小写)
  • (?:\s*-\s*employed)?:optional match-employed匹配
  • (?!\s+Employed\b):否定前视,断言Self后面不跟1+空格和单词Employed

Python相关问答推荐

aiohTTP与pytest的奇怪行为

这些变量是否相等,因为它们引用相同的实例,尽管它们看起来应该具有不同的值?

使用decorator 自动继承父类

在Python中,什么表达相当于0x1.0p-53?

如何修复使用turtle和tkinter制作的绘画应用程序的撤销功能

从今天起的future 12个月内使用Python迭代

在Python中为变量的缺失值创建虚拟值

在函数内部使用eval(),将函数的输入作为字符串的一部分

仿制药的类型铸造

rame中不兼容的d类型

如何在Windows上用Python提取名称中带有逗号的文件?

如何找到满足各组口罩条件的第一行?

Mistral模型为不同的输入文本生成相同的嵌入

如何列举Pandigital Prime Set

SQLAlchemy Like ALL ORM analog

我如何根据前一个连续数字改变一串数字?

迭代嵌套字典的值

旋转多边形而不改变内部空间关系

未调用自定义JSON编码器

如何获取Python synsets列表的第一个内容?