我有一个熊猫数据帧,如下所示,每个元组中都有文本字符串:
Text Col
-----------
I have an apple.
She eats orange.
Tom likes banana and orange
我想从"文本 Col"中提取关键字,并将关键字分配为另一列"关键字 col"中的值
Text Col KeyWord
-----------------------------------------------------
I have an apple. apple
She eats orange. orange
Tom likes banana and orange banana, orange
我只知道我可以检查字符串是否包含特定的关键字 df['Text Col'].str.contains('apple|orange|banana')
但我不知道如何将列中包含的关键字分配给另一列。
用谷歌搜索过,但没有任何类似的问题。有人可以帮我解决这个问题吗?
非常感谢!
使用 .str.extract
,例如
df['Text Col'].str.extract('(apple|orange|banana)', expand = False)
或.extractall
后跟.unstack
(如果预计有多个匹配项):
matches = df['Text Col'].str.extractall('(apple|orange|banana)').unstack()
你需要加入它们;如果你的数据集很小,你可以在纯Python中做到这一点:
df['extracted'] = [','.join(filter(None,li)) for li in matches.values]
如果你坚持在熊猫中这样做,你可以在列上使用循环,尽管它看起来很混乱:
df['extracted'] = ''
for _,col in matches.fillna('').iteritems():
df['extracted'] += col + ','
df['extracted'] = df['extracted'].str.rstrip(',')