我试图从下面的字符串中提取www
网站的第二个示例。这是在一个pandas数据框中。
https://google.com/url?q=https://www.accenture.com/in-en/insights/software-platforms/core-
banking-on-
cloud&sa=U&ved=2ahUKEwiQ75fwvYD1AhXOYMAKHXofCeoQFnoECAgQAg&usg=AOvVaw02sP402HcesId4vbgOaspD
所以我想提取下面的字符串并将其存储在单独的列中。
https://www.accenture.com/in-en/insights/software-
platforms/core- banking-on-
cloud&sa=U&ved=2ahUKEwiQ75fwvYD1AhXOYMAKHXofCeoQFnoECAgQAg&usg=AOvVaw02sP402HcesId4vbgOaspD
最终数据框:
sr.no link_orig link_extracted
1 <the above string> <the extracted string that starts from
https://www.accenture.com>
下面是代码片段:
df['link_extracted'] = `df['link_orig'].str.contains('www.accenture.com',regex=False,na-np.NaN)
我收到以下错误:
ValueError: Cannot mask with non-boolean array containing NA / NaN values
我在这里遗漏了什么?如果我必须使用正则表达式,那么应该采用什么方法?
3条答案
按热度按时间oxosxuxt1#
这个错误消息意味着你可能在
link_orig
列中有NaN。这可以通过在代码中添加fillna('')
来修复。就像
也就是说,我不确定剩下的代码是否会按照你的要求执行,它只会返回
True
iswww.accenture.com
islink_orig
字符串中的任何位置。如果您尝试提取的链接始终包含
www.accenture.com
,则可以执行以下操作vaj7vani2#
就我个人而言,我会使用
Series.str.extract()
。例如:这将匹配
http
,后跟任何内容,然后捕获http
,后跟任何内容。另一种方法是使用urlparse。
r6vfmomb3#
可以使用
urllib.parse
模块:输出: