You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用apply和lambda简化基于字典的URL关键词提取代码?

用apply+Lambda简化关键词提取逻辑

当然可以!你的需求完全能用apply结合lambda表达式实现,而且能大幅精简代码量,同时保留原有的逻辑。

先回顾下你原来的函数逻辑:针对每行的domain,从对应的关键词列表里找到第一个出现在url中的关键词,找不到则返回None。我们可以用生成器表达式+next()函数把这个逻辑压缩到lambda里。

实现代码

假设你的DataFrame名为df,包含domain和url列,生成新列的代码如下:

df['extracted_keyword'] = df.apply(
    lambda row: next(
        (kw for kw in brand_dict.get(row['domain'], []) if kw in row['url']),
        None
    ),
    axis=1
)

代码解释

  • brand_dict.get(row['domain'], []):安全获取当前domain对应的关键词列表,如果domain不在字典中,返回空列表避免KeyError。
  • 生成器表达式(kw for kw in ... if kw in row['url']):遍历该domain的关键词,筛选出存在于当前url中的项。
  • next(..., None):取出生成器的第一个匹配项;如果没有任何关键词匹配,就返回None,和你原函数的行为完全一致。

效果验证

比如你的DataFrame里有这样一行:

domainurl
bmwhttps://bmw.com/3er/specs/

运行代码后,extracted_keyword列会得到/3er/,和原函数的输出一致。

内容的提问来源于stack exchange,提问作者s_khan92

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:55:29