Python 基于数据帧和列表获取更多相似的单词

Python 基于数据帧和列表获取更多相似的单词,python,pandas,list,difflib,Python,Pandas,List,Difflib,我想在我的数据帧上返回一个新列,其中的单词更类似于我的pandas列值(在本例中为col1)。 我的实际数据帧是: 我有以下清单: ['Product_A1', 'Product_B1', 'Product_C'] 我的输出应该是: 为此,我使用以下代码(我只是打印结果): 然而,我总是得到一个空的名单 我做错了什么 谢谢 试试这个: df['col3'] = df['col1'].apply(lambda x : difflib.get_close_matches(x, products

我想在我的数据帧上返回一个新列,其中的单词更类似于我的pandas列值(在本例中为col1)。 我的实际数据帧是:

我有以下清单:

['Product_A1', 'Product_B1', 'Product_C']
我的输出应该是:

为此,我使用以下代码(我只是打印结果):

然而,我总是得到一个空的名单

我做错了什么

谢谢

试试这个:

df['col3'] = df['col1'].apply(lambda x : difflib.get_close_matches(x, products_list, cutoff=0.9))
您的解决方案的问题是,函数正在查找产品列表中的整个列。添加以下行,请参见:

In [8]: products_list2 = [['Product_Z1', 'Product_A', 'Product_B'], ['test']]

In [9]: difflib.get_close_matches(df['col1'], products_list2)
Out[9]: [['Product_Z1', 'Product_A', 'Product_B']]
试试这个:

df['col3'] = df['col1'].apply(lambda x : difflib.get_close_matches(x, products_list, cutoff=0.9))
您的解决方案的问题是,函数正在查找产品列表中的整个列。添加以下行,请参见:

In [8]: products_list2 = [['Product_Z1', 'Product_A', 'Product_B'], ['test']]

In [9]: difflib.get_close_matches(df['col1'], products_list2)
Out[9]: [['Product_Z1', 'Product_A', 'Product_B']]

如果存在某种模式,您可以比较字符串的子集或使用正则表达式。Hugo Salvador在下面的回答中嵌入了对您的“我做错了什么”问题的回答,但只是为了澄清:匹配的第一个参数必须是字符串,而不是字符串列表。如果存在某种模式,您可以比较字符串的子集或使用正则表达式。Hugo Salvador在下面的答案中嵌入了您“我做错了什么”问题的答案,但只是为了澄清:匹配的第一个参数必须是字符串,而不是字符串列表。就代码而言,这是一个很好的答案。可以通过明确回答问题“出了什么问题?”并包含指向
difflib.get\u close\u matches
文档的链接来稍微改进。就代码而言,答案不错。可以通过明确回答问题“出了什么问题?”并包含指向
difflib.get\u close\u matches
文档的链接来稍微改进。