基于 Pandas DataFrame 和 List 获取更多相似词
Get more similar word based on a Pandas DataFrame and a List
我想 return 我的数据框上的一个新列,其中的词更类似于我的 pandas 列值(在本例中为 col1)。
我的实际数据框是:
我有以下列表:
['Product_A1', 'Product_B1', 'Product_C']
我的输出应该是:
为此,我使用以下代码(我只是打印结果):
import pandas as pd
import difflib
d = {'col1': ['Product_Z1', 'Product_A', 'Product_B'], 'col2': [1, 2, 3]}
df = pd.DataFrame(data=d)
products_list = ['Product_A', 'Product_B', 'Product_C']
print(difflib.get_close_matches(df['col1'], products_list))
但是我总是得到一个空列表...
我做错了什么?
谢谢!
试试这个:
df['col3'] = df['col1'].apply(lambda x : difflib.get_close_matches(x, products_list, cutoff=0.9))
关于您的解决方案的问题是 get_close_matches 函数正在寻找 products_list 中的整个列。添加以下行并查看:
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']]
我想 return 我的数据框上的一个新列,其中的词更类似于我的 pandas 列值(在本例中为 col1)。 我的实际数据框是:
我有以下列表:
['Product_A1', 'Product_B1', 'Product_C']
我的输出应该是:
为此,我使用以下代码(我只是打印结果):
import pandas as pd
import difflib
d = {'col1': ['Product_Z1', 'Product_A', 'Product_B'], 'col2': [1, 2, 3]}
df = pd.DataFrame(data=d)
products_list = ['Product_A', 'Product_B', 'Product_C']
print(difflib.get_close_matches(df['col1'], products_list))
但是我总是得到一个空列表...
我做错了什么?
谢谢!
试试这个:
df['col3'] = df['col1'].apply(lambda x : difflib.get_close_matches(x, products_list, cutoff=0.9))
关于您的解决方案的问题是 get_close_matches 函数正在寻找 products_list 中的整个列。添加以下行并查看:
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']]