簡體   English   中英

過濾列包含所有 substring

[英]Filter columns contains all substring

我正在嘗試 select 數據集中的所有脆皮雞肉三明治,我嘗試使用這個正則表達式,但它仍然有一些烤雞肉三明治。 這是代碼

data_sandwich_crispy = data[data['Item'].str.contains(r'^(?=.*crispy)(?=.*sandwich)(?=.*chicken)', regex=True)]

這是數據集的外觀

非常感謝任何修訂或答案鏈接。 如果有錯誤真的很抱歉,謝謝大家的幫助!

這將是我的解決方案。 它查找單詞 Crispy 后跟單詞 Chicken 和單詞 Sandwich 的字符串。 但是,中間可以有任意數量的空格或任何其他字符。

# some data
l = ["Crispy Chicken Sandwich", 
     "Grilled Chicken Sandwich", 
     "crispy Chicken Sandwich"]
data = pd.DataFrame(l, columns=["A"])
data
#       A
# 0     Crispy Chicken Sandwich
# 1     Grilled Chicken Sandwich
# 2     crispy Chicken Sandwich


# consider `case`
data[data['A'].str.contains(r'Crispy.+Chicken.+Sandwich', regex=True, case=False)]
#       A
# 0     Crispy Chicken Sandwich
# 2     crispy Chicken Sandwich

如果您的意思是只收集所有包含crispy chicken sandwhich的行,請查看下面的替代解決方案。 只有當所有三個單詞(crispy、chicken 和 classic)都存在時,這才會返回行:

data_sandwich_crispy = df[df['item'].str.contains(r'^(?=.*?\bcrispy\b)(?=.*?\bchicken\b)(?=.*?\bclassic\b).*$',regex=True)]

我創建了一個簡單的 dataframe 如下所示:

item    id
premium crispy chicken classic sandwhich    10
premium grilled chicken classic sandwhich   15
premium club chicken classic sandwhich      14

運行上面給出的命令給出以下 output:

item    id
premium crispy chicken classic sandwhich    10

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM