Python如何移除URL中https://前缀及.com后内容以合并DataFrame
Pandas 按URL作为主键合并DataFrame实现方案
核心逻辑是先对两个DataFrame的URL字段做标准化处理,去除https://前缀和.com之后的所有内容,再以标准化后的URL为键执行合并。
完整实现代码
import pandas as pd # 构造示例数据 df1 = pd.DataFrame({ 'url': [ 'https://www.mcdonalds.com/us/en-us.html', 'https://www.cemexusa.com/find-your-location' ] }) df2 = pd.DataFrame({ 'url': [ 'https://www.mcdonalds.com', 'www.cemexusa.com' ] }) # 定义URL标准化规则:提取到.com为止的内容,自动忽略http/https前缀 url_pattern = r'^(?:https?://)?(.*?\.com)' df1['standard_url'] = df1['url'].str.extract(url_pattern) df2['standard_url'] = df2['url'].str.extract(url_pattern) # 按标准化后的URL合并两个表 merged_df = pd.merge( df1, df2, on='standard_url', how='inner', # 可根据需求改为left/right/outer suffixes=('_df1', '_df2') )
结果验证
处理后两个表的standard_url字段取值完全一致:
- df1的standard_url:
['www.mcdonalds.com', 'www.cemexusa.com'] - df2的standard_url:
['www.mcdonalds.com', 'www.cemexusa.com']
可以直接作为合并主键使用。
扩展说明
如果需要适配其他域名后缀(如.cn、.org等),只需要修改正则规则即可,例如适配com和cn后缀的写法为:url_pattern = r'^(?:https?://)?(.*?\.(?:com|cn))'
内容的提问来源于stack exchange,提问作者user032020
相关产品推荐
相关产品推荐

