Python 将df1中的每一行与df2中的每一行进行比较,并从最接近的匹配列返回字符串值

Python 将df1中的每一行与df2中的每一行进行比较,并从最接近的匹配列返回字符串值,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧 df1包括4名男性和4名女性及其体重和身高(英寸) #df1 约翰,236,76 杰克,204,74 吉姆,156,71 杰瑞德,182,72 苏西,119,60 萨利,149岁,66岁 沙龙,169,65岁 萨米,182,75 df2包括4名男性和4名女性及其体重和身高(英寸) #df2 亚伦,285,77 安倍,236,75 亚历克斯,178,72 亚当,195,71岁 玛丽,14866岁 梅莉,155,66 玛丽莲,199,65岁 麦迪逊,160,73 我想做的是将来自

我有两个数据帧

df1包括4名男性和4名女性及其体重和身高(英寸)

#df1
约翰,236,76
杰克,204,74
吉姆,156,71
杰瑞德,182,72
苏西,119,60
萨利,149岁,66岁
沙龙,169,65岁
萨米,182,75
df2包括4名男性和4名女性及其体重和身高(英寸)

#df2
亚伦,285,77
安倍,236,75
亚历克斯,178,72
亚当,195,71岁
玛丽,14866岁
梅莉,155,66
玛丽莲,199,65岁
麦迪逊,160,73
我想做的是将来自df1的男性与来自df2的男性进行比较,看看他们在身高和体重方面最像谁。只需从体重中减去体重,从身高中减去身高,然后返回df2中每个人的绝对值。更具体地说,返回最相似的人的名字

因此,在本例中,约翰最接近的对手是新专栏中的安倍·苏
df1['doppelganger']=“Abe”


我是一个初学者爱好者,所以即使给我指出正确的方向也会有帮助。我已经在堆栈溢出中查找了大约五个小时,试图找出如何进行类似的操作。

首先需要区分
男性
女性
,这里使用了新列,重复4次
m
f
。然后与所有组合的“新列外部联接”一起使用,并为差异创建新列,最后一列是它们的
sum
。然后按3列按排序,因此按
A
g
对每组的第一行进行筛选:

输入数据帧:

print (df1)    
        A    B   C
0    John  236  76
1    Jack  204  74
2     Jim  156  71
3   Jared  182  72
4    Suzy  119  60
5   Sally  149  66
6  Sharon  169  65
7   Sammy  182  75

print (df2)
         A    B   C
0    Aaron  285  77
1      Abe  236  75
2     Alex  178  72
3     Adam  195  71
4     Mary  148  66
5   Maylee  155  66
6  Marilyn  199  65
7  Madison  160  73

我还没有机会用我的数据帧测试它,但看起来这就是我需要知道的!谢谢我也非常感谢Doom编辑我的问题,这样它更容易阅读。我在过去的一个小时里对它进行了测试,并查看了结果,试图找出任何错误,但无法找到。这对我来说是非常有帮助的,因为我昨天对它非常失望。再次感谢。我唯一能让事情变得更清楚的改变是将性别列单独指定,这样我(作为初学者)就可以更容易地看到您使用外部合并的具体操作。谢谢
print (df1)    
        A    B   C
0    John  236  76
1    Jack  204  74
2     Jim  156  71
3   Jared  182  72
4    Suzy  119  60
5   Sally  149  66
6  Sharon  169  65
7   Sammy  182  75

print (df2)
         A    B   C
0    Aaron  285  77
1      Abe  236  75
2     Alex  178  72
3     Adam  195  71
4     Mary  148  66
5   Maylee  155  66
6  Marilyn  199  65
7  Madison  160  73