generalize_names_duplcheck: 泛化名称,同时防止不同名称之间出现重复
一个函数,用于将 pandas DataFrame
中的姓名转换为通用格式 <last_name><separator><firstname letter(s)> (all lowercase)
,同时避免重复条目。
from mlxtend.text import generalize_names_duplcheck
概述
注意:使用 mlxtend.text.generalize_names
并设置较少的 firstname_output_letters
可能会导致重复条目。例如,如果您的数据集中包含姓名 "Adam Johnson" 和 "Andrew Johnson",默认设置(即 1 个名字字母)将在这两种情况下都生成通用姓名 "johnson a"。
一种解决方案是增加输出中名字字母的数量,将参数 firstname_output_letters
设置为大于 1 的值。
另一种替代解决方案是,如果您正在使用 pandas DataFrame,则使用 generalize_names_duplcheck
函数。
默认情况下,generalize_names_duplcheck
会将 generalize_names
应用于 pandas DataFrame 列,使用最少数量的名字字母,并根据需要添加名字字母,直到给定 DataFrame 列中不再存在重复项。以下是包含以下姓名的数据集列示例:
参考文献
- -
示例 1 - 默认值
读取包含 Name
列的 CSV 文件,我们想对该列的姓名进行泛化
- Samuel Eto'o
- Adam Johnson
- Andrew Johnson
import pandas as pd
from io import StringIO
simulated_csv = "name,some_value\n"\
"Samuel Eto'o,1\n"\
"Adam Johnson,1\n"\
"Andrew Johnson,1\n"
df = pd.read_csv(StringIO(simulated_csv))
df
name | some_value | |
---|---|---|
0 | Samuel Eto'o | 1 |
1 | Adam Johnson | 1 |
2 | Andrew Johnson | 1 |
应用 generalize_names_duplcheck
生成一个新的 DataFrame,其中包含泛化后无重复的姓名
from mlxtend.text import generalize_names_duplcheck
df_new = generalize_names_duplcheck(df=df, col_name='name')
df_new
name | some_value | |
---|---|---|
0 | etoo s | 1 |
1 | johnson ad | 1 |
2 | johnson an | 1 |
API
generalize_names_duplcheck(df, col_name)
泛化姓名并移除重复项。
默认情况下,将 mlxtend.text.generalize_names 应用于 DataFrame,使用 1 个名字字母;如果检测到重复项,则使用更多名字字母。
参数
-
df
:pandas.DataFrame
包含需要应用 generalize_names 的列的 DataFrame。
-
col_name
:str
需要应用
generalize_names
函数的 DataFrame 列的名称。
返回
-
df_new
:pandas.DataFrame
已应用 generalize_names 函数且无重复项的新 DataFrame 对象。
示例
有关用法示例,请参阅 https://mlxtend.cn/mlxtend/user_guide/text/generalize_names_duplcheck/