Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 将字符串拆分为名字和姓氏的最简单方法是什么?_Python 3.x_Pandas_Jupyter Notebook_Data Munging_Data Wrangling - Fatal编程技术网

Python 3.x 将字符串拆分为名字和姓氏的最简单方法是什么?

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茉莉花蕾切因为它不包含任何结构,所以你运气不好。一个特别的解决方案可能是

数据集有14k行,有许多标题等

我是Pandas和Python的初学者,我想知道如何从这个数据集中获取名字和姓氏的输出

数据集:

0 Pr.Doz.Dr。克劳斯·塞姆勒·法哈茨特·弗劳恩赫

1.达利亚大学(布达佩斯)博士

2医学博士。约万·斯托吉尔科维奇

医学博士。德克施耐德

4马克·谢尔曼

14083袋幼儿园实践

14084乌尔里希·布罗米格先生

14085孙海因里希

14086医学博士先生。阿马德乌斯哈特维格


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