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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:35:22