gpt4 book ai didi

python - Python 中使用 Pandas.series.str.contains 进行字符串替换时出现模式匹配错误

转载 作者:行者123 更新时间:2023-12-01 09:09:21 25 4
gpt4 key购买 nike

我试图用从包含多组括号的字典中提取的字符串来替换 pandas 数据框中的字符串。运行脚本时,我收到匹配组错误,并且字符串未被替换。我相当确信这个错误是由括号引起的。

为了解决这个问题,我一直在尝试使用 str.contains() 方法来使用正则表达式模式匹配。我已经查看了 stackoverflow 上提供的其他解决方案,但尚未成功解决我的错误。

这是我用于测试目的的一些脚本。将括号保留在字符串中非常重要(即我不必删除它们):

import pandas as pd
import numpy as np

dict= {'2017() (pat)':'2000',
'2018() (pat)':'2001'}

df = pd.DataFrame({'YEAR': ['test2017end','test2018end','test2019end'],
'MONTH': ['Jan','Feb','Mar'],
'DD': ['1','12','22']})

for init, repl in dict.items():
df.loc[df['YEAR'].str.contains(init),'YEAR'] = repl

print(df)

有人可以提供有关使用模式匹配以便正确替换字符串的指导吗?

谢谢!

最佳答案

不要使用变量dict,因为Python代码关键字。

解决方案是提取字典键中的第一个整数:

import re

d= {'2017() (pat)':'2000',
'2018() (pat)':'2001'}

df = pd.DataFrame({'YEAR': ['test2017end','test2018end','test2019end'],
'MONTH': ['Jan','Feb','Mar'],
'DD': ['1','12','22']})

for init, repl in d.items():
i = re.findall('\d+', init)[0]
df.loc[df['YEAR'].str.contains(i),'YEAR'] = repl

print(df)
YEAR MONTH DD
0 2000 Jan 1
1 2001 Feb 12
2 test2019end Mar 22

关于python - Python 中使用 Pandas.series.str.contains 进行字符串替换时出现模式匹配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51796687/

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