在两个特定字符串之间使用正则表达式替换熊猫细胞中的字符串

时间:2019-11-16 09:32:54

标签: python regex pandas

在替换之间的字符串之间存在一些技巧,但是我认为我的正则表达式有问题,或者我应该使用其他方法。

我需要在Name列中替换单词(在这种情况下为is,但不一定总是is,有时是不同的单词)替换为is not。 这个特定的世界在直接以'h'结尾的数字之间。

我的df:

df=pd.DataFrame({'Name':['Adam is 23.2h is 223h mike is 223h',
'Katie is 13.2h is 22h mike is 223h','Ilam is 2h is 223h mike is 223h',
'Katie','Brody','Brody like mike'],
'B':[20,20,21,21,22,21]})

    B                                Name
0  20  Adam is 23.2h is 223h mike is 223h
1  20  Katie is 13.2h is 22h mike is 223h
2  21     Ilam is 2h is 223h mike is 223h
3  21                               Katie
4  22                               Brody
5  21                     Brody like mike

预期输出:

    B                                     Name
0  20   Adam is 23.2h is not 223h mike is 223h
1  20   Katie is 13.2h is not 22h mike is 223h
2  21      Ilam is 2h is not 223h mike is 223h
3  21                                    Katie
4  22                                    Brody
5  21                          Brody like mike

代码:

df.Name=df.Name.replace({'([0-9]{1,8}.[0-9]{1,4}h|[0-9]{1,8}h)(.*?)([0-9]{1,8}.[0-9]{1,4}h|[0-9]{1,8}h)':'is not'},regex=True)

1 个答案:

答案 0 :(得分:1)

要使用匹配组,请写 AUTH_USER_MODEL = 'appname.CustomUser' 。而且,看来,您可以使用更简单的正则表达式

:r'\1 is not \3'