gpt4 book ai didi

Python-使用正则表达式模式替换 DataFrame 中列表中的单词

转载 作者:行者123 更新时间:2023-12-02 03:11:43 25 4
gpt4 key购买 nike

我有以下列表和数据框:

mylist = ['foo', 'bar', 'baz']
df = pd.DataFrame({'Col1': ['fooThese', 'barWords', 'baz are', 'FOO: not', 'bAr:- needed'],
'Col2': ['Baz:Neither', 'Foo Are', 'barThese', np.nan, 'but this is fine']})

如果在 DataFrame 中找到,我想替换 mylist 中的字符串。我可以使用以下正则表达式模式替换一些:

pat = '|'.join([r'\b{}'.format(w) for w in mylist])
df2 = df.replace(pat, '', regex=True)

但是这并没有放置所有实例。我想要的输出如下:

    Col1     Col2
0 These Neither
1 Words Are
2 are These
3 not NaN
4 needed but this is fine

最佳答案

您必须使用 ?i 正则表达式标志,这使得您的替换不区分大小写,同时删除特殊字符:

mydict = {f'(?i){word}': '' for word in mylist}
df2 = df.replace(mydict, regex=True).replace('[:-]', '', regex=True)

Col1 Col2
0 These Neither
1 Words Are
2 are These
3 not NaN
4 needed but this is fine

或者您可以将特殊字符添加到字典中,这样您就不必调用 DataFrame.replace 两次:

mydict = {f'(?i){word}': '' for word in mylist}#.update({'[:-]': ''})
mydict['[:-]'] = ''
df2 = df.replace(mydict, regex=True)

Col1 Col2
0 These Neither
1 Words Are
2 are These
3 not NaN
4 needed but this is fine

关于Python-使用正则表达式模式替换 DataFrame 中列表中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61032268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com