去除?和使用替换在熊猫数据框列中的字符串中的符号

时间:2020-09-27 00:00:24

标签: python pandas replace

我已经研究过转义字符,但这对我没有帮助。

我有一个熊猫数据框,其中的列称为Page。这是网页名称(而不是网址)的列表。

所以目前它们以3种格式编写:

1. home ? home ? pagename1
2. home | home | pagename2
3. home home pagename3

我希望它们的格式都与数字3相同。

我试图从此列的字符串对象中删除字符,但保留其余代码。

我用过这个:

df.loc[df['Page'].str.replace(('\?|\|'), ''), Regex=True, Inplace=True]

但是我得到输出:

File "<ipython-input-80-2c616b171200>", line 2
df['page']=df.loc[df['Page'].str.replace(('\?|\\'), ''), Regex=True, Inplace=True]
SyntaxError: invalid syntax

如果使用此,则输出相同:

df['page']=df.loc[df['Page'].str.replace(('\?|\|'), ''), Regex=True, Inplace=True]

我尝试使用其他选项,例如:

x=pd.Series['Page']
x.str.replace('\?|\|','',regex = True, inplace=True)

但这给了我

TypeError                                 Traceback (most recent call last) <ipython-input-70-6563d5fa5d40> in <module> 1 #clean up page names ----> 2 x=pd.Series['Page'] 3 x.str.replace('\?|\|','',regex = True, inplace=True) TypeError: 'type' object is not subscriptable

任何人都可以帮忙吗?

谢谢

Mizz

2 个答案:

答案 0 :(得分:0)

数据

df=pd.DataFrame({'text':['home ? home ? pagename1','home | home | pagename2','home home pagename3']})

                   text
0  home ? home ? pagename1
1  home | home | pagename2
2      home home pagename3

解决方案

使用df.str.replace(regex, replacement) link

df.text=df.text.str.replace('[\s\?\s]|[\s\|\s]',' ')

               text
0  home   home   pagename1
1  home   home   pagename2
2      home home pagename3

答案 1 :(得分:0)

因此您会收到语法错误,因为regex=True(是的,所有小写字母)部分都应该是括号中str.replace()参数的一部分。下面的代码

#Modifying page
df['page'] = df['page'].str.replace(('\?|\|'), '',regex=True)
print(df)

获得此结果

0  home  home  pagename1
1  home  home  pagename2
2    home home pagename3