Python 将df1中的每一行与df2中的每一行进行比较,并从最接近的匹配列返回字符串值
我有两个数据帧 df1包括4名男性和4名女性及其体重和身高(英寸)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
约翰,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