为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Pandas 数据框字段在 Python 中的另一个字段中使用正则表达式替换文本?

如何使用 Pandas 数据框字段在 Python 中的另一个字段中使用正则表达式替换文本?

慕桂英546537 2021-05-30 18:04:07
我想在熊猫数据框的另一个字段(“单词”)的基础上找到文本。#import reimport pandas as pddf = pd.DataFrame([['I like apple pie','apple'],['Nice banana and lemon','banana|lemon']], columns=['text','words'])df['text'] = df['text'].str.replace(r''+df['words'].str, '*'+group(0)+'*')df我想用*标记找到的单词。我怎样才能做到这一点?所需的输出是:我喜欢 *apple* pieNice *banana* 和 *lemon*
查看完整描述

2 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

您可以从中捕获单词,words并在替换中使用后向引用将其包装在*:


import re

import pandas as pd

df = pd.DataFrame([['I like apple pie','apple'],['Nice banana and     lemon','banana|lemon']], columns=['text','words'])


df['text'] = df['text'].replace(r'('+df['words']+')', r'*\1*', regex=True)

print(df)

印刷:


                            text         words

0             I like *apple* pie         apple

1  Nice *banana* and     *lemon*  banana|lemon


查看完整回答
反对 回复 2021-06-01
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

IIUC使用 (?i)与re.I


df.text.replace(regex=r'(?i)'+ df.words,value="*")

Out[131]: 

0        I like * pie

1    Nice * and     *

Name: text, dtype: object

由于您更新了问题


df.words=df.words.str.split('|')

s=df.words.apply(pd.Series).stack()

df.text.replace(dict(zip(s,'*'+s+'*')),regex=True)

Out[139]: 

0               I like *apple* pie

1    Nice *banana* and     *lemon*

Name: text, dtype: object


查看完整回答
反对 回复 2021-06-01
  • 2 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信