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

如何匹配DataFrame列与列表元素并保留DataFrame原顺序

保留DataFrame原字符串顺序匹配列表词汇的解决方法

你当前代码的问题是按my_list的顺序筛选匹配项,导致结果顺序和原字符串不一致。要维持原字符串里的词汇顺序,得换个思路:遍历原字符串拆分后的词汇,只保留出现在my_list中的项,这样就能完全遵循原顺序。

解决代码

import pandas as pd

df = pd.DataFrame({'a': ['Boston Red Sox', 'Chicago White Sox']})
my_list = ['Red', 'Sox', 'White']

# 转成小写集合,既忽略大小写差异,又提升查找效率
my_match_set = {word.lower() for word in my_list}

# 遍历原字符串的词汇,只保留匹配项
df['a'] = df['a'].apply(lambda x: ' '.join([word for word in x.split() if word.lower() in my_match_set]))

运行结果

a
0  Red Sox
1  White Sox

逻辑说明

  1. 把my_list转成小写集合:集合的成员查找效率远高于列表,同时统一大小写避免匹配时的大小写问题
  2. 对每个字符串先拆分词汇:按空格拆分后,遍历的顺序就是原字符串里词汇的出现顺序
  3. 过滤并拼接:只保留那些小写形式在集合里的词汇,最后拼接成字符串,自然就保留了原顺序

对比你原来的代码:原来的逻辑是遍历my_list,检查每个词是否在原字符串中,结果顺序完全由my_list的顺序决定,这就是为什么第二行出现了Sox White而不是White Sox。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:32:05