如何在Python DataFrame中按元素存在组合过滤列?
Pandas DataFrame 多条件文本过滤实现
原始DataFrame
先构造原始数据:
import pandas as pd data = { 'ID': [1, 2, 3, 4, 5, 6], 'Col_1': [ 'Apple, Cherry, Banana', 'Apple, Mango', 'Kiwi, Cherry', 'Apple, Cherry, Pear', 'Apple, Melon', 'Papaya, Cherry' ] } df = pd.DataFrame(data)
三种过滤需求的实现
1. Col_1同时包含Apple和Cherry
利用str.contains结合逻辑与运算符&实现:
# 过滤同时包含Apple和Cherry的行 filter_both = df[(df['Col_1'].str.contains('Apple')) & (df['Col_1'].str.contains('Cherry'))] print(filter_both)
输出结果:
ID Col_1 0 1 Apple, Cherry, Banana 3 4 Apple, Cherry, Pear
2. Col_1包含Apple但不包含Cherry
用~运算符取反,结合条件实现:
# 过滤包含Apple但不含Cherry的行 filter_apple_only = df[(df['Col_1'].str.contains('Apple')) & (~df['Col_1'].str.contains('Cherry'))] print(filter_apple_only)
输出结果:
ID Col_1 1 2 Apple, Mango 4 5 Apple, Melon
3. Col_1包含Cherry但不包含Apple
调换条件并取反:
# 过滤包含Cherry但不含Apple的行 filter_cherry_only = df[(df['Col_1'].str.contains('Cherry')) & (~df['Col_1'].str.contains('Apple'))] print(filter_cherry_only)
输出结果:
ID Col_1 2 3 Kiwi, Cherry 5 6 Papaya, Cherry
内容的提问来源于stack exchange,提问作者Yash
相关产品推荐
相关产品推荐

