Python 熊猫只从右边替换
给定以下数据帧:Python 熊猫只从右边替换,python,pandas,replace,Python,Pandas,Replace,给定以下数据帧: import pandas as pd d = pd.DataFrame({'Last, First':['Jim Jrower','Chauncy Peppertooth, Jr']}) Last, First 0 Jim Jrower 1 Chauncy Peppertooth, Jr 我想删除“简孝儒”,如果它出现在字符串的右侧,而不是在中间。 我不能用 d['Last,First'].str.rstrip(“
import pandas as pd
d = pd.DataFrame({'Last, First':['Jim Jrower','Chauncy Peppertooth, Jr']})
Last, First
0 Jim Jrower
1 Chauncy Peppertooth, Jr
我想删除“简孝儒”,如果它出现在字符串的右侧,而不是在中间。 我不能用
d['Last,First'].str.rstrip(“Jr”)
因为这将从右侧删除“J”和“r”的所有实例
我不能用
d['Last, First'].str.replace("Jr","")
因为如果它出现在字符串的中间,那么它将取“简孝儒”。 如果我能在最后摆脱那个讨厌的“Jr”,我就能做到
d['Last,First'].str.rstrip(“,”)
处理结尾的逗号
提前谢谢 使用
str.用正则表达式替换
d.iloc[:, 0].str.replace(', Jr$', '')
# |
# matches end of line /
0 Jim Jrower
1 Chauncy Peppertooth
Name: Last, First, dtype: object
使用正则表达式模块,您可以执行以下操作
例如:
import re
import pandas as pd
def example(somestring):
temp = somestring.lower()
result = re.search(r'\sjr$', temp)
if result:
return somestring[:result.start()]
else:
return somestring
d = pd.DataFrame({'Last, First':['Jim Jrower','Chauncy Peppertooth, Jr', 'jonathan jrureiagh, jr']})
d
Out[58]:
Last, First
0 Jim Jrower
1 Chauncy Peppertooth, Jr
2 jonathan jrureiagh, jr
d.applymap(example)
Out[59]:
Last, First
0 Jim Jrower
1 Chauncy Peppertooth,
2 jonathan jrureiagh,
我是否也可以使用.str.replace(“,Jr$| Jr$”,”)来解释Jr和Jr?我只是验证了我可以,但由于某种原因,我没有在我的实际情况下工作。如果有什么值得注意的,我会再发一个问题。谢谢使用d.iloc[:,0].str.replace(',J[rR]$,'')
在我这边仍然不起作用。我一定是做错了什么,但我看不出来。我使用的是列名而不是.iloc[:,0],因为我有>1列,只想将其应用于该列。不过我想这没关系。否?可能是字符串末尾的空格d.iloc[:,0].str.replace(',J[rR]\s*$,'')