首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于regex匹配替换数据文件中的字符串值

基于regex匹配替换数据文件中的字符串值
EN

Stack Overflow用户
提问于 2015-11-17 15:41:43
回答 1查看 1.6K关注 0票数 3

我有一个python数据框架,列名为“认可该专栏应该有认证数据:"10/10/2011”或put:“”未认证“,但在大多数情况下,未经认证的专栏都有一些文本,比如:”这个业务没有被认证……“我想替换全文,只写:”未认证“

现在我写了一个函数:

代码语言:javascript
复制
def notAcredited(string):
    if ('Not' in string or 'not' in string):
        return  'Not Accredited'

我正在用一个循环实现这个函数,是否可以用".apply“方法来实现呢?

代码语言:javascript
复制
for i in range(len(df_1000_1500)):
    accreditacion = notAcredited(df_1000_1500['BBBAccreditation'][i])
    if accreditacion == 'Not Accredited':
        df_1000_1500['BBBAccreditation'][i] = accreditacion
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-17 15:44:33

您可以使用向量化字符串方法Series.str.replace

代码语言:javascript
复制
In [72]: df = pd.DataFrame({'accredited': ['10/10/2011', 'is not accredited']})

In [73]: df
Out[73]: 
          accredited
0         10/10/2011
1  is not accredited

In [74]: df['accredited'] = df['accredited'].str.replace(r'(?i).*not.*', 'not accredited')

In [75]: df
Out[75]: 
       accredited
0      10/10/2011
1  not accredited

传递给replace的第一个参数,例如r'(?i).*not.*',可以是任何正则表达式。第二个可以是任何正则表达式替换值--与re.sub所接受的字符串类型相同。regex模式中的(?i)使模式不区分大小写,因此notNotNOtNoT等都将匹配。

Series.str.replace Cython化了对re.sub的调用(这使得它比使用apply所能达到的速度更快,因为apply使用apply循环)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33761047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档