[英]search multiple keywords python
如何改進我的代碼以使用數據框特定列中的關鍵字列表進行搜索並返回包含該值的那些行。 當前代碼只接受兩個關鍵字!
contain_values = df[df['tweet'].str.contains('free','news')]
contain_values.head()
根據文檔, Series.str.contains
采用正則表達式。 要么使用您的值構建正則表達式,要么使用 for 循環逐一檢查多個元素,然后聚合回來。
因此(對於正則表達式):
regex = '|'.join(['free', 'news'])
df['tweet'].str.contains(regex, case=False, na=False)
請注意,您不能將列表直接傳遞給Series.str.contains
,它會引發錯誤。 您可能還想通過case=False
和na=False
使正則表達式不區分大小寫,如果您的推文列中某處有NaN
(例如無評論轉發),則傳遞False
。
您的代碼目前僅返回包含'free'
並忽略'news'
推文。 讓我們測試一下:
>>> df
tweet
0 free stuff
1 newsnewsnews
2 hello world
3 another tweet
>>> df[df['tweet'].str.contains('free', 'news')]
tweet
0 free stuff
請參閱.str.contains()的文檔:您可以傳遞單詞或正則表達式。 這將起作用:
df[df['tweet'].str.contains('free|news|hello')]
在這里,我添加了第三個關鍵字,現在返回數據幀的前 3 個元素:
tweet
0 free stuff
1 newsnewsnews
2 hello world
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.