擅长:python、mysql、java
<p>你的逻辑似乎太复杂了。您可以将单个列表理解与<code>pd.Series.apply</code>一起使用。如下所示,我建议您使用<code>set</code>进行O(1)查找,使用<code>str.casefold</code>匹配字符串,而不考虑大小写。你知道吗</p>
<pre><code>s = pd.Series(['Abuj Cen Le', 'Mr USD', 'TABLEAU EMBALLAGE', 'LISA e EMBALV'])
word_set = {i.casefold() for i in ['Mr', 'USD', 'TABLEAU', 'LISA']}
def apply_filter(x):
out = ' '.join([i for i in x.split() if i.casefold() in word_set])
return out if out else np.nan
res = s.apply(apply_filter)
print(res)
0 NaN
1 Mr USD
2 TABLEAU
3 LISA
dtype: object
</code></pre>