Python Pandas 数据框搜索行之间的二级关系
Python Pandas Data Frame search secondary relations between rows
例如,我在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']}
我们可以假设最好的朋友永远在数据框中。
这很容易做到:
首先复制你的数据来制作两个DataFrame:
df2 = df[['Name', 'fav_color']].copy()
接下来,加入人名和好友名这两个DataFrames:
res = df.merge(df2, how='left', left_on='Best_friend_name', right_on='Name')
res
将包含您要查找的输出。它的列将需要重命名。您会注意到您将有 fav_color_x
和 fav_color_y
。要重命名,只需将正确的名称分配给 res.columns
,如下所示:
res.columns = ['Name', 'fav_color', 'Best_friend_name', 'Name2', 'Best_friend_fav_color']
您注意到两个 Name
列了吗?您可以简单地删除 'Name2'.
例如,我在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']}
我们可以假设最好的朋友永远在数据框中。
这很容易做到:
首先复制你的数据来制作两个DataFrame:
df2 = df[['Name', 'fav_color']].copy()
接下来,加入人名和好友名这两个DataFrames:
res = df.merge(df2, how='left', left_on='Best_friend_name', right_on='Name')
res
将包含您要查找的输出。它的列将需要重命名。您会注意到您将有 fav_color_x
和 fav_color_y
。要重命名,只需将正确的名称分配给 res.columns
,如下所示:
res.columns = ['Name', 'fav_color', 'Best_friend_name', 'Name2', 'Best_friend_fav_color']
您注意到两个 Name
列了吗?您可以简单地删除 'Name2'.