Python 3.x 将字符串拆分为名字和姓氏的最简单方法是什么?
数据集有14k行,有许多标题等 我是Pandas和Python的初学者,我想知道如何从这个数据集中获取名字和姓氏的输出 数据集: 0 Pr.Doz.Dr。克劳斯·塞姆勒·法哈茨特·弗劳恩赫 1.达利亚大学(布达佩斯)博士 2医学博士。约万·斯托吉尔科维奇 医学博士。德克施耐德 4马克·谢尔曼 14083袋幼儿园实践 14084乌尔里希·布罗米格先生 14085孙海因里希 14086医学博士先生。阿马德乌斯哈特维格Python 3.x 将字符串拆分为名字和姓氏的最简单方法是什么?,python-3.x,pandas,jupyter-notebook,data-munging,data-wrangling,Python 3.x,Pandas,Jupyter Notebook,Data Munging,Data Wrangling,数据集有14k行,有许多标题等 我是Pandas和Python的初学者,我想知道如何从这个数据集中获取名字和姓氏的输出 数据集: 0 Pr.Doz.Dr。克劳斯·塞姆勒·法哈茨特·弗劳恩赫 1.达利亚大学(布达佩斯)博士 2医学博士。约万·斯托吉尔科维奇 医学博士。德克施耐德 4马克·谢尔曼 14083袋幼儿园实践 14084乌尔里希·布罗米格先生 14085孙海因里希 14086医学博士先生。阿马德乌斯哈特维格 14087茉莉花蕾切因为它不包含任何结构,所以你运气不好。一个特别的解决方案可能是
14087茉莉花蕾切因为它不包含任何结构,所以你运气不好。一个特别的解决方案可能是只写下一个列表,列出所有你已经识别的位置/标题/连词和其他噪音,然后从行中去除这些噪音。然后,如果你注意到一些你想排除的事情,就把它们添加到你的列表中 这并不能解决某些行的名称顺序相反的问题。因此,它需要您手动检查所有内容并检查该行是否有效,但这可能比手动编辑每一行要快 一个简单的暴力例子是:
excludes = {'dr.', 'herr', 'budapest', 'med.', 'für', ... }
new_entries = []
for title in all_entries:
cleaned_result = []
parts = title.split(' ')
for part in parts:
if part.lowercase() not in excludes:
cleaned_result.append(part)
new_entries.append(' '.join(cleaned_result))
这将适用于大多数名称,而不是所有名称。对于重复性,您可能需要一个标题列表,如(博士、医学博士、大学)来跳过数据格式如何?你如何确定某物是一个名称还是一个位置/标题/连词/等等?名称是人工输入的还是系统结构的?是否包含中文名称?因为中文名字以姓氏开头。我共享的数据集有两列:索引和标题。字符串中我要清除的“标题”。这个字符串包含-名字、姓氏、头衔(Dr、Mr.Ms等)、像“/,;”这样的字符,有些行只有名字和姓氏,但大部分是噪音。不确定它是否回答了你的问题不,主要是德语名字,但你的观点在这里仍然有效,因为我观察到名字和姓氏在一些行中顺序颠倒。好吧,那么“标题”不包含任何结构?如果结构是任意的,则无法提取它们的名称,除非您有另一个有效名称列表。
for name in dataset:
first = name.split()[-2]
last = name.split()[-1]
# save here