如何判断DataFrame的name列列表内所有元素都属于指定英文词典
实现方案
- 先将你的单词词典转换为集合类型,利用集合O(1)的查询效率提升校验速度:
word_set = set(words['word'])
- 对
name列逐行校验列表内所有元素是否都属于合法英文单词:
df['is_english'] = df['name'].apply(lambda x: all(item in word_set for item in x))
原方法失效原因
你之前使用的isin方法是把name列的整个列表作为一个独立整体去匹配words内的元素,不会深入列表内部校验单个元素,因此无法实现需求。
上述实现中all()函数会遍历列表的每一个元素,只有所有元素都存在于英文词库中才会返回True,任意元素不在词库中就返回False,完全匹配你的校验规则。
可选扩展
如果需要处理空列表的边界场景,可以自行调整判断逻辑,比如要求空列表返回False的话修改为:
df['is_english'] = df['name'].apply(lambda x: len(x) > 0 and all(item in word_set for item in x))
内容的提问来源于stack exchange,提问作者LearningCode
相关产品推荐
相关产品推荐

