Python Pandas str.contains() 行中有超链接

Python Pandas str.contains() with hyperlinks in rows

我有两个 pandas 数据帧,如下所示:

df1

site link
retailer_site1 https://www.retailer_site1.com
... ...
retailer_siteX https://www.retailer_siteX.com

df2

site link
retailer_site1 https://www.retailer_site1.com
... ...
retailer_siteY https://www.retailer_siteY.com

所以我想遍历 df2 并在 df1 中找到来自 df2 的链接实例。这是我的代码:

    for row in df2['link'].astype(str):
        boolean_findings = df1['link'].str.contains(row)

当我打印 boolean_findings 时,我得到的都是假的,我知道这不可能是真的,因为我在我的 excel 文件中看到本地匹配:

boolean_findings
False
False
...
False

我想知道的是为什么超链接字符串文本在第一个 df 上没有匹配到它的等效项,以及我可以做些什么来匹配这些网站。

"I took a look and noticed some websites have a ( and ) included in their links, which might be throwing off the links

比较链接时好像只需要考虑alphanumeric/underscore个字符,可以用

df2["link"].str.replace(r'\W+','', regex=True).isin(
    df1["link"].str.replace(r'\W+','', regex=True))

.str.replace(r'\W+','', regex=True) 部分将从链接中删除除字母、变音符号、数字和连接标点符号(最常见的字符是其中的下划线)以外的任何字符。