[英]Finding specific words in a column
我正在嘗試使用 findall 函數在數據幀列中的字符串中查找 4 個特定單詞。
df = pd.DataFrame({'case':('Case1','Case2','Case3','Case4'),
'text':('good boy', 'bad girl', 'yoghurt', 'good girl yoghurt')})
case text
0 Case1 good boy
1 Case2 bad girl
2 Case3 yoghurt
3 Case4 good girl yoghurt
假設我想找到 'good' 和 'yoghurt',創建一個列表,該數據集將為我提供: ['good',' ','yoghurt','good, yoghurt'] - 所以給出空字符串或返回 None如果它們在同一行,就給我兩個詞。 然后我可以從中創建一個新列,這就是為什么我得到每一行很重要,即使是空的。
大多數 findall 示例都涉及正則表達式符號,我正在嘗試為其提供單詞列表。
您可以將str.findall
與|
正則表達式運算符(意思是“或”)
df['new_column'] = df.text.str.findall('good|yoghurt')
>>> df
case text new_column
0 Case1 good boy [good]
1 Case2 bad girl []
2 Case3 yoghurt [yoghurt]
3 Case4 good girl yoghurt [good, yoghurt]
如果你想用逗號連接單詞,按照你的問題建議的方式,你可以應用', '.join
:
df['new_column'] = df.text.str.findall('(good|yoghurt)').apply(', '.join,1)
>>> df
case text new_column
0 Case1 good boy good
1 Case2 bad girl
2 Case3 yoghurt yoghurt
3 Case4 good girl yoghurt good, yoghurt
使用get_dummies
s=df.text.str.get_dummies(sep=' ')[['good','yoghurt']]
s.eq(1).dot(s.columns+',').str[:-1]
Out[23]:
0 good
1
2 yoghurt
3 good,yoghurt
dtype: object
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.