Python 如何将一个数据帧中的每一行与另一个数据帧中的所有行进行比较,并计算距离度量?
我有两个不同的客户数据帧,我想根据Jaccard距离矩阵或任何其他方法匹配它们 df1 df2 输出: 如果字符串比较值大于>0.6, 我想在新的数据框中合并这两行 Df3Python 如何将一个数据帧中的每一行与另一个数据帧中的所有行进行比较,并计算距离度量?,python,string,pandas,dataframe,comparison,Python,String,Pandas,Dataframe,Comparison,我有两个不同的客户数据帧,我想根据Jaccard距离矩阵或任何其他方法匹配它们 df1 df2 输出: 如果字符串比较值大于>0.6, 我想在新的数据框中合并这两行 Df3 我试着根据每一行计算每一行,但不知道如何将每一行与另一个数据帧中的整行进行比较?我想使用fuzzyfuzzy from fuzzywuzzy import process df1['key'] = df1.sum(1) df2['key'] = df2.sum(1) def yoursource(x): if
我试着根据每一行计算每一行,但不知道如何将每一行与另一个数据帧中的整行进行比较?我想使用
fuzzyfuzzy
from fuzzywuzzy import process
df1['key'] = df1.sum(1)
df2['key'] = df2.sum(1)
def yoursource(x):
if [process.extract(x, df2.key.tolist(), limit=1)][0][0][1]>60:
return [process.extract(x, df2.key.tolist(), limit=1)][0][0][0]
else :
return 'notmatch'
df1['key'] = df1.key.apply(yoursource)
之后,我们使用
merge
df = df1.merge(df2, on='key', how='inner').drop('key',1)
df
Name_x country_x Name_y country_y
0 raj Kazakhstan rak Kazakhstan
1 sam Russia sim russia
2 kanan Belarus kane Belarus
您能告诉我如何合并不同数据帧中显示的不同列吗?例如,我在df1中有3列,在df2中有5列。我只想比较两列,但我想在新列表中添加所有列dataframe@Raj将此部分更改为df1['key']=df1[['col1','col2']]。总和(1)df2['key']=df2[['col1','col2']]。总和(1)是否有可能计算并比较一个数据帧中的行数据的每个单元格值与另一个数据帧中的行数据的每个单元格值,并找出平均大于0.6的行值?您希望从这笔奖金中得到什么?具体来说,您不满意当前接受的答案是什么?比较表1的第1列与表2的第1列之间的距离,以及表1的第2列与表2的第2列之间的距离,依此类推。最后从两次比较中取平均分。如果你问我的话,似乎有点太宽泛了。你的尝试在哪里?最好就你的后续问题提出一个新问题
Name country Name country cost DOB
0 raj Kazakhstan rak Kazakhstan 23 12-12-1903
1 sam Russia sim russia 243 03-04-1994
2 kanan Belarus Kane Belarus 2 23-12-1999
from fuzzywuzzy import process
df1['key'] = df1.sum(1)
df2['key'] = df2.sum(1)
def yoursource(x):
if [process.extract(x, df2.key.tolist(), limit=1)][0][0][1]>60:
return [process.extract(x, df2.key.tolist(), limit=1)][0][0][0]
else :
return 'notmatch'
df1['key'] = df1.key.apply(yoursource)
df = df1.merge(df2, on='key', how='inner').drop('key',1)
df
Name_x country_x Name_y country_y
0 raj Kazakhstan rak Kazakhstan
1 sam Russia sim russia
2 kanan Belarus kane Belarus