Python Pandas 数据帧搜索行之间的次要关系



例如,我在Python中有一个DataFrame,用people_name,fav_color best_friend_name命名人员。我的查询应该如何,以便我可以添加一个新列,该列是他们最好的朋友最喜欢的颜色,即best_friend_fav_color?

我的数据是这样的:

{'Name' : ['John', 'Leo', 'Mary'],
 'fav_color' : ['Red', 'Blue', 'Green'],
 'Best_friend_name' : ['Leo', 'Mary', 'John']}

预期输出如下:

{'Name' : ['John', 'Leo', 'Mary'],
 'fav_color' : ['Red', 'Blue', 'Green'],
 'Best_friend_name' : ['Leo', 'Mary', 'John'], 
 'Best_friend_fav_color' = ['Blue', 'Green', 'Red']}

我们可以假设最好的朋友将永远在数据框中。

这很容易做到:

首先复制数据以创建两个数据帧:

df2 = df[['Name', 'fav_color']].copy()

接下来,加入此人和最佳朋友姓名上的两个数据帧:

res = df.merge(df2, how='left', left_on='Best_friend_name', right_on='Name')

res将包含您要查找的输出。它的列将需要重命名。你会注意到你会有 fav_color_xfav_color_y .要重命名,只需将正确的名称分配给res.columns,如下所示:

res.columns = ['Name', 'fav_color', 'Best_friend_name', 'Name2', 'Best_friend_fav_color']

您注意到两Name列了吗?您可以简单地删除"Name2"。

最新更新