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(',')
我有一个如下所示的 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(',')