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

pandas如何从字符串列提取含空格的指定短语生成新列

错误原因

你原来的代码逻辑是先通过x.split()将Brand列的字符串按空格切割为独立的单个单词,再逐个判断这些单个单词是否存在于匹配列表中。而你匹配列表里的Honda Civic是包含空格的短语,不属于单个单词,自然不会出现在切割后的单词列表里,所以无法匹配到。

实现方案

推荐使用pandas内置的字符串正则匹配方法实现,性能比apply更优,也能直接支持多字符短语匹配:

  1. 先构造正则匹配模式,注意要按匹配短语的长度倒序排序,避免出现短短语先匹配、长短语无法匹配的问题(比如如果列表同时存在Honda和Honda Civic,倒序排序后会优先匹配更长的Honda Civic)
  2. 用str.extract提取匹配结果即可,若需要匹配同一条目中的多个目标短语,可改用str.findall后拼接结果。

完整代码示例:

import pandas as pd

# 原始数据
cars = {'Brand': ['Honda Civic 1998','2001 Toyota Corolla','99 Ford','2011 Audi']}
df = pd.DataFrame(cars, columns = ['Brand'])
mylist = ['Honda Civic','Ford','Audi']

# 构造正则匹配模式:按短语长度倒序排列,避免短匹配优先
pattern = '|'.join(sorted(mylist, key=len, reverse=True))

# 提取第一个匹配到的短语,无匹配则返回空值
df['words from list'] = df['Brand'].str.extract(f'({pattern})', expand=False)

# 如果需要匹配同一条目中的多个短语,用以下代码替换上一行即可
# df['words from list'] = df['Brand'].str.findall(pattern).str.join(' ')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:09:01