我知道這是一個被反復問過的問題,但我對列表理解不太擅長,而且我的代碼有一點小變化。我有一個包含關鍵字的數據框,如果關鍵字包含一個或多個專用列表中的關鍵字,我想過濾它們。請注意,我不是在尋找確切的表達式,只是在數據框中出現子字符串?;旧衔艺J為它應該是這樣的:substring_list = ['abc', 'def']df[df['tag'].str.contains(substring) for substring in substring_list]我不斷收到語法錯誤。有什么想法嗎?感謝支持!
3 回答

慕斯王
TA貢獻1864條經驗 獲得超2個贊
Pandas 進行二進制過濾,因此它返回一個 True / False 列表,對應于字符串是否包含您的鍵,您可以對所有條件進行按位運算和運算,因此您可以獲得包含所有子字符串的字符串或其中任何一個(取決于您使用的是 'and' & 還是 'or' | )
df[df['tag'].str.contains('abc') | df['tag'].str.contains('def')]

達令說
TA貢獻1821條經驗 獲得超6個贊
簡單地試試這個:
通過將模式中的單詞與|以下內容連接來構建正則表達式來使用模式庫搜索:
df[df.tag.str.contains('|'.join(substring_list))]
如果您只有幾個字符串要搜索,那么 simple 可以像下面這樣使用:
df[df.tag.str.contains("abc|def")]
示例說明:
>>> df
tag
0 abc
1 edf
2 abc
3 def
4 efg
>>> df[df.tag.str.contains("abc|def")]
tag
0 abc
2 abc
3 def
>>> substring_list = ['abc', 'def']
>>> df[df.tag.str.contains('|'.join(substring_list))]
tag
0 abc
2 abc
3 def
添加回答
舉報
0/150
提交
取消