如何清理以不同格式插入的名称(用逗号、点等分隔)的列



假设您有一个包含两列的数据集,一个id和一个名称,但是列名是手动插入的,并且名称以不同的格式键入。有些是用点而不是空白分隔的。还有一些人把姓氏放在前面,然后是逗号,然后是名字。有些行有中间名甚至名称标题。

<表类> ID 名称 tbody><<tr>1艾莉Joella2安东尼奥。查兹3。伊恩克雷塔4能源部,约翰。5Marie.Eliza.Grey6Mason, Lary O7Winfred, Mr. Barry8Andrea.T.B.Shaw

您可以尝试使用regex字典的replace:

df['Name'] = df['Name'].replace({r'(?<!Dr|Mr)(.s*)': ' ', r'([^,]+)s*,s*(.*)': r'2 1'}, regex=True)
print(df)
# Output
ID               Name
0   1       Ellie Joella
1   2       Antonio Chaz
2   3    Dr. Ian Coretta
3   4           John Doe
4   5   Marie Eliza Grey
5   6       Lary O Mason
6   7  Mr. Barry Winfred
7   8    Andrea T B Shaw

我认为你必须使用分割方法。你必须根据文本内容做几个操作。我将首先检查文本中是否有空格,并在它们之后分割字符串。
你还需要做一个例外的列表Mr. Dr.等,如果分割后的第一个字符串是其中的任何一个,然后将它与第二个字符串合并。

你可以试着让函数

def person(data):
test = ('dr.', 'mr.', 'etc.')
try:
space = val.index(' ')
except:
space = None

if space:
pers = data.split(' ')
else:
pers = data.split('.')

和下一步检查所有你想要的但是如何检查一个单词是姓还是名我不知道

最新更新