我有这个数据集
ID Name
101 DR. ADAM SMITH
102 BEN DAVIS
103 MRS. ASHELY JOHNSON
104 DR. CATHY JONES
105 JOHN DOE SMITH
期望输出
ID Name
101 ADAM SMITH
102 BEN DAVIS
103 ASHELY JOHNSON
104 CATHY JONES
105 JOHN DOE SMITH
我需要摆脱前缀我尝试df['Name'] = df['Name'].replace(to_replace = 'DR. ', value = '')
我重复相同的代码为所有前缀,但我有当我这样做什么也没有发生。有什么原因吗?
先谢谢你。
6条答案
按热度按时间ghg1uchk1#
如果第一个单词以
.
结尾,则使用正则表达式匹配第一个单词。d5vmydt92#
'''#示例数据data = { ' ID ':[101,102,103,104,105],“名称”:亚当·史密斯博士本·戴维斯夫人阿什利·Json博士Cathy Jones ','John Doe Smith ']}
'''
bihw5rsg3#
你可以使用正则表达式来替换字符串的一部分。例如:
图纸:
注意:
.replace(r'DR. ', '')
试图用空字符串替换整个DR.
,而不仅仅是字符串的一部分。v64noz0r4#
你就快成功了。您需要添加.str:
pokxtpni5#
使用正则表达式:
此表达式匹配以句点和空格结尾的任何内容,并且应该匹配大多数前缀(“DR.”、“MRS.”、“MR.”等)。你可以像这样将它集成到你的代码中:
1.在代码顶部添加
import re
行。1.使用线
df['Name'] = re.sub(r".*\.\s", "", df['Name'])
代替df['Name'] = df['Name'].replace(to_replace = 'DR. ', value = '')
有关正则表达式的更多信息,请参见:https://www.w3schools.com/python/python_regex.asp
4xy9mtcn6#
在使用
replace()
函数时什么都没有发生的原因是因为它将输入视为文字字符串并查找精确匹配。在您的情况下,“名称”列中的值在前缀前后包含额外的空格,因此找不到完全匹配的值。
要解决这个问题,您可以使用
re
模块中的正则表达式(regex)来删除“Name”列中的前缀: