Python pandas |如何将从一列中提取的关键字分配给另一列?

Python pandas | how to assign keywords extracted from a column to another column?

我有一个如下所示的 pandas 数据框,每个元组中都有文本字符串:

  Text Col
-----------
I have an apple.
She eats orange.
Tom likes banana and orange

我想从 "Text Col" 中提取关键字并将关键字指定为另一列中的值 "keyword 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]

如果你在pandas中坚持这样做,你可以在列上使用循环,虽然它看起来很乱:

df['extracted'] = ''
for _,col in matches.fillna('').iteritems():
    df['extracted'] += col + ','
df['extracted'] = df['extracted'].str.rstrip(',')