【问题标题】:How to split two first names that together in two different words in python如何在python中用两个不同的单词将两个名字拆分在一起
【发布时间】:2021-07-19 19:58:39
【问题描述】:

我正在尝试拆分拼写错误的名字。它们中的大多数都连接在一起。我想知道是否有任何方法可以将两个在一起的名字分成两个不同的词。

例如,如果拼写错误的名称为trujillohernandez,则将其分隔为trujillo hernandez

我正在尝试创建一个 函数,该函数可以对包含数千个拼写错误名称的整个列执行此操作,如上面的示例。然而,我并没有成功。拼写检查库不起作用,因为这些是名字并且是西班牙裔名称。

如果您能帮助开发某种功能来实现它,我将不胜感激。

【问题讨论】:

  • 除非你有所有可能的名字的列表,否则没有办法做到这一点。

标签: python pandas function nlp data-cleaning


【解决方案1】:

如上面的 cmets 所述,没有可能的名称列表会导致问题。然而,也许并不完美,但提供一些尝试......

给定一个数据框示例,例如...

    Name
0   sofíagomez
1   isabelladelgado
2   luisvazquez
3   juanhernandez
4   valentinatrujillo
5   camilagutierrez
6   joséramos
7   carlossantana

代码(Python):

import pandas as pd
import requests

# longest list of hispanic surnames I could find in a table
url = r'https://namecensus.com/data/hispanic.html'

# download the table into a frame and clean up the header
page = requests.get(url)
table = pd.read_html(page.text.replace('<br />',' '))
df = table[0]
df.columns = df.iloc[0]
df = df[1:]

# move the frame of surnames to a list
last_names = df['Last name / Surname'].tolist()
last_names = [each_string.lower() for each_string in last_names]

# create a test dataframe of joined firstnames and lastnames
data = {'Name' : ['sofíagomez', 'isabelladelgado', 'luisvazquez', 'juanhernandez', 'valentinatrujillo', 'camilagutierrez', 'joséramos', 'carlossantana']}
df = pd.DataFrame(data, columns=['Name'])

# create new columns for the matched names
lastname = '({})'.format('|'.join(last_names))
df['Firstname'] = df.Name.str.replace(str(lastname)+'$', '', regex=True).fillna('--not found--')
df['Lastname'] = df.Name.str.extract(str(lastname)+'$', expand=False).fillna('--not found--')

# output the dataframe
print('\n\n')
print(df)

输出:

    Name                Firstname   Lastname
0   sofíagomez          sofía       gomez
1   isabelladelgado     isabella    delgado
2   luisvazquez         luis        vazquez
3   juanhernandez       juan        hernandez
4   valentinatrujillo   valentina   trujillo
5   camilagutierrez     camila      gutierrez
6   joséramos           josé        ramos
7   carlossantana       carlos      santana

可能需要进一步清理,但可能会拆分大部分名称。

【讨论】:

  • @bernard romero 这有帮助吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-25
  • 2012-10-09
  • 2013-12-17
  • 2017-07-26
  • 2019-01-11
相关资源
最近更新 更多