我有一個字串
email = '[email protected]'
和一個 DF
df = DataFrame({ ‘id’: [1, 2, 3], 'email_address': [‘[email protected]’, ‘[email protected]’, ‘[email protected]’ ]})
我想添加一個名為“分數”的列,并根據我的電子郵件字串對每個 email_address 進行評分。我試過:
df['score'] = difflib.SequenceMatcher(None, df['email_address'], email).ratio()
但它總是將所有內容評分為 0.0,即使我使字串電子郵件與 df 中的一封電子郵件完全匹配。
背景是我們在注冊多個帳戶時遇到問題,因此我們希望能夠搜索電子郵件并查看是否已經存在任何類似的電子郵件。
我也對這個問題的不同方法持開放態度。謝謝!
uj5u.com熱心網友回復:
你可以使用:pandas.DataFrame.apply
In [1]: import pandas as pd
...: from difflib import SequenceMatcher
In [2]: df = pd.DataFrame({'id': [1, 2, 3], 'email_address': ['[email protected]', '[email protected]', '[email protected]']})
...: df
Out[2]:
id email_address
0 1 [email protected]
1 2 [email protected]
2 3 [email protected]
In [3]: email = '[email protected]'
In [4]: df['score'] = df['email_address'].apply(lambda e: SequenceMatcher(None, email, e).ratio())
...: df
Out[4]:
id email_address score
0 1 [email protected] 0.785714
1 2 [email protected] 0.857143
2 3 [email protected] 0.620690
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/412592.html
標籤:
下一篇:Pandas系列布爾圖和繪圖
