首页 > 解决方案 > Python Pandas str.contains() 行中带有超链接

问题描述

我有两个这样的熊猫数据框:

df1

地点 关联
零售商站点1 https://www.retailer_site1.com
... ...
零售商站点X https://www.retailer_siteX.com

df2

地点 关联
零售商站点1 https://www.retailer_site1.com
... ...
零售商站点Y 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
错误的
错误的
...
错误的

我想知道的是为什么超链接字符串文本与第一个 df 上的等价物不匹配,以及我能做些什么来匹配这些站点。

标签: pythonpandasdataframehyperlink

解决方案


"我看了看,发现一些网站的链接中包含(),这可能会导致链接失效

在比较链接时,您似乎只需要考虑字母数字/下划线字符,您可以使用

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

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


推荐阅读