[英]Find substring in list in a pandas.Series in Python
我有一個熊貓數據框,其中一列包含列表。 我想搜索每個列表(=每一行)並檢查一個或多個元素是否包含特定的子字符串。
數據:
list_Series = pd.Series([["handful of tomatos", "2 peppers", " tsp salt"],
["1 kg of meat", "fresh basil"]])
搜索詞:
search_for = ["pepper", "salt"]
'list_Series' 的期望輸出:
True
False
現在我想應用一個(也許是矢量化的?)函數來檢查一個系列元素是否包含所有搜索子字符串。 如果系列只包含字符串而沒有列表,我會這樣做: pd.Series.str.contains("salt")
。 在查看單個列表時,我會執行:
def filterlist(liste, searchwords):
occurs = 0
for word in searchwords:
for string in liste:
if word.lower() in string.lower():
occurs += 1
break
if occurs == len(searchwords):
return True
但這是非常笨重和漫長的。 而且我想在應用於整個 pd.Series 時效率不是很高。 而且我不知道如何將其應用於系列。
謝謝您的幫助! 也在尋找反饋,這是我在 stackoverflow 上的第一篇文章! 將這個系列轉換為數據幀會更好嗎?
您可以使用嵌套列表理解:
result = [listelement for searchtarget in search_for for each_list_in_series in list_Series for listelement in each_list_in_series if searchtarget in listelement]
result
將是:
['2 peppers', ' tsp salt']
這相當於,沒有列表推導式:
result=[]
for searchtarget in search_for:
for each_list_in_series in list_Series:
for listelement in each_list_in_series:
if searchtarget in listelement:
result.append(listelement)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.