我有两个数据帧,每个数据帧有不同的行数。下面是每个数据集的几行
df1 =
Company City State ZIP
FREDDIE LEES AMERICAN GOURMET SAUCE St. Louis MO 63101
CITYARCHRIVER 2015 FOUNDATION St. Louis MO 63102
GLAXOSMITHKLINE CONSUMER HEALTHCARE St. Louis MO 63102
LACKEY SHEET METAL St. Louis MO 63102
以及
df2 =
FDA Company FDA City FDA State FDA ZIP
LACKEY SHEET METAL St. Louis MO 63102
PRIMUS STERILIZER COMPANY LLC Great Bend KS 67530
HELGET GAS PRODUCTS INC Omaha NE 68127
ORTHOQUEST LLC La Vista NE 68128
我用combined_data = pandas.concat([df1, df2], axis = 1)
把它们连在一起。我的下一个目标是使用来自fuzzy wuzzy
模块的几个不同的匹配命令将df1['Company']
下的每个字符串与df2['FDA Company']
下的每个字符串进行比较,并返回最佳匹配的值及其名称。我想把它放在一个新的专栏里。例如,如果我对df1['Company']
中的LACKY SHEET METAL
执行fuzz.ratio
和fuzz.token_sort_ratio
操作,则返回的最佳匹配是LACKY SHEET METAL
,得分为100
,然后将其保存在combined data
中的新列中。结果会是
combined_data =
Company City State ZIP FDA Company FDA City FDA State FDA ZIP fuzzy.token_sort_ratio match fuzzy.ratio match
FREDDIE LEES AMERICAN GOURMET SAUCE St. Louis MO 63101 LACKEY SHEET METAL St. Louis MO 63102 LACKEY SHEET METAL 100 LACKEY SHEET METAL 100
CITYARCHRIVER 2015 FOUNDATION St. Louis MO 63102 PRIMUS STERILIZER COMPANY LLC Great Bend KS 67530
GLAXOSMITHKLINE CONSUMER HEALTHCARE St. Louis MO 63102 HELGET GAS PRODUCTS INC Omaha NE 68127
LACKEY SHEET METAL St. Louis MO 63102 ORTHOQUEST LLC La Vista NE 68128
我试过了
combined_data['name_ratio'] = combined_data.apply(lambda x: fuzz.ratio(x['Company'], x['FDA Company']), axis = 1)
但由于列的长度不同而出错。
我被难住了。我怎样才能做到这一点?
我不知道你在做什么。我就是这样做的。
创建一系列要比较的元组:
创建一个特殊函数来计算模糊度量并返回一个序列。
将
metrics
应用于compare
系列下一部分有很多方法:
与
df1
的每一行进行最接近的匹配与
df2
的每一行进行最接近的匹配相关问题 更多 >
编程相关推荐