如何在Python中筛选包含指定值的多值DataFrame列?
解决方法
你的问题出在str.contains('apple')会匹配所有包含"apple"子串的内容,包括像custard-apple这种把apple作为单词一部分的情况。要筛选出包含独立"apple"的行,有两种可靠的方法:
方法一:使用正则单词边界匹配
利用正则表达式的\b(单词边界)来确保匹配的是完整的"apple"单词,而不是子串:
import pandas as pd # 构造示例DataFrame data = { 'Fruits': [ 'apple, pineapple, mango', 'guava, blueberry, apple', 'custard-apple, cranberry', 'banana, kiwi, peach', 'apple' ] } df = pd.DataFrame(data) # 筛选包含独立apple的行 filtered_df = df[df['Fruits'].str.contains(r'\bapple\b')] print(filtered_df)
输出结果:
Fruits 0 apple, pineapple, mango 1 guava, blueberry, apple 4 apple
方法二:分割字符串后检查元素存在性
把每个单元格的字符串按, 分割成水果列表,直接判断"apple"是否在列表中:
filtered_df = df[df['Fruits'].str.split(', ').apply(lambda x: 'apple' in x)]
这种方式逻辑更直观,完全避免了子串匹配的问题,结果和方法一一致。
内容的提问来源于stack exchange,提问作者Yash
相关产品推荐
相关产品推荐

