如何从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)
运行结果
| ID | String | Desired_Column |
|---|---|---|
| 100 | Jonel-al89 (et) | al89, et |
| 200 | Stel-00(et) al89 x 57-mm | et, al89 |
| 300 | Metall, 54ro | Metall, 54ro |
| 400 | allu, Metall9(lop) | allu, Metall |
关于预期输出的说明
对比你给出的预期结果,存在几处不一致:
- 第1行预期包含
one,但原字符串中并没有该元素; - 第3行和第4行预期包含
et,但对应字符串中也不存在该元素。
如果你的需求确实是提取字符串中实际存在的列表元素,上述代码的结果是正确的;如果需求有其他逻辑(比如匹配规则不同),可以补充说明后再调整实现。
内容的提问来源于stack exchange,提问作者Sergei
相关产品推荐
相关产品推荐

