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

如何从DataFrame字符串列中提取列表中的所有匹配元素?

解决方案

可以通过pandas的apply方法结合列表推导式实现需求,核心逻辑是遍历每个字符串,检查列表中的元素是否作为子串存在于该字符串中,最后将匹配到的元素用逗号连接。

代码实现

import pandas as pd

the_list = ["one", "et", "allu", "Metall", "54ro", 'al89']

df = pd.DataFrame({ 'ID':[100, 200, 300, 400],
                   'String':['Jonel-al89 (et)', 'Stel-00(et) al89 x 57-mm', 'Metall,   54ro', "allu, Metall9(lop)"]
                  })

# 定义匹配函数
def extract_matching_items(s):
    # 收集所有在字符串中存在的列表元素
    matched = [item for item in the_list if item in s]
    # 用逗号连接结果
    return ', '.join(matched)

# 新增目标列
df['Desired_Column'] = df['String'].apply(extract_matching_items)

print(df)

运行结果

IDStringDesired_Column
100Jonel-al89 (et)al89, et
200Stel-00(et) al89 x 57-mmet, al89
300Metall, 54roMetall, 54ro
400allu, Metall9(lop)allu, Metall

关于预期输出的说明

对比你给出的预期结果,存在几处不一致:

  • 第1行预期包含one,但原字符串中并没有该元素;
  • 第3行和第4行预期包含et,但对应字符串中也不存在该元素。
    如果你的需求确实是提取字符串中实际存在的列表元素,上述代码的结果是正确的;如果需求有其他逻辑(比如匹配规则不同),可以补充说明后再调整实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:10:35