Python Pandas:如何替换包含“?”的字符串

2024-05-11

我有一个 Python 2.7 Pandas Dataframe,如下所示:

Id      Title             URL
Id-1    Bruce Almighty    https://www.youtube.com/watch?v=5VGyTOGxyVA
Id-2    Superhero Movie   https://www.youtube.com/watch?v=3BnXz-7-y-o
Id-3    Taken             https://www.youtube.com/watch?v=vjbfiOERDYs
Id-4    Forest Gump       https://www.youtube.com/watch?v=eJFkCJySHdY&t=524s

我想用其他字符串替换字符串“?v=”的一部分,例如“URL”列中的“ppp”。我尝试使用正常的替换命令:

df['URL'] = df['URL'].str.replace('?v=', 'ppp')

但出现以下错误。

error: nothing to repeat.

当我尝试仅替换一个字符时,例如:

df['URL'] = df['URL'].str.replace('?', 'ppp')

效果很好。为什么当我尝试替换字符串 "?v=" 时它不起作用?


你需要逃离? by \:

df['URL'] = df['URL'].str.replace('\?v=', 'ppp')
print (df)
     Id            Title                                                URL
0  Id-1   Bruce Almighty        https://www.youtube.com/watchppp5VGyTOGxyVA
1  Id-2  Superhero Movie        https://www.youtube.com/watchppp3BnXz-7-y-o
2  Id-3            Taken        https://www.youtube.com/watchpppvjbfiOERDYs
3  Id-4      Forest Gump  https://www.youtube.com/watchpppeJFkCJySHdY&t=...

另一种解决方案是Series.replace http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.replace.html:

df['URL'] = df['URL'].replace('\?v=', 'ppp', regex=True)
print (df)
     Id            Title                                                URL
0  Id-1   Bruce Almighty        https://www.youtube.com/watchppp5VGyTOGxyVA
1  Id-2  Superhero Movie        https://www.youtube.com/watchppp3BnXz-7-y-o
2  Id-3            Taken        https://www.youtube.com/watchpppvjbfiOERDYs
3  Id-4      Forest Gump  https://www.youtube.com/watchpppeJFkCJySHdY&t=...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python Pandas:如何替换包含“?”的字符串 的相关文章

随机推荐