1

我有一个字符串

email = 'joe@gmail.com' 

和一个 DF

df = DataFrame({ ‘id’: [1, 2, 3], 'email_address': [‘steve@gmail.com’, ‘joe@hotmail.com’, ‘bill@hotmail.com’ ]})

我想添加一个名为“分数”的列,并根据我的电子邮件字符串对每个 email_address 进行评分。我试过:

  df['score']  = difflib.SequenceMatcher(None, df['email_address'], email).ratio()

但它总是将所有内容评分为 0.0,即使我使字符串电子邮件与 df 中的一封电子邮件完全匹配。

背景是我们在注册多个帐户时遇到问题,因此我们希望能够搜索电子邮件并查看是否已经存在任何类似的电子邮件。

我也对这个问题的不同方法持开放态度。谢谢!

4

1 回答 1

1

你可以使用:pandas.DataFrame.apply

In [1]: import pandas as pd
   ...: from difflib import SequenceMatcher
In [2]: df = pd.DataFrame({'id': [1, 2, 3], 'email_address': ['steve@gmail.com', 'joe@hotmail.com', 'bill@hotmail.com']})
   ...: df
Out[2]: 
   id     email_address
0   1   steve@gmail.com
1   2   joe@hotmail.com
2   3  bill@hotmail.com
In [3]: email = 'joe@gmail.com'
In [4]: df['score'] = df['email_address'].apply(lambda e: SequenceMatcher(None, email, e).ratio())
   ...: df
Out[4]: 
   id     email_address     score
0   1   steve@gmail.com  0.785714
1   2   joe@hotmail.com  0.857143
2   3  bill@hotmail.com  0.620690
于 2022-01-17T00:50:23.957 回答