2016-01-27 51 views
0

例如,我有一個Python中的DataFrame,用people_name,fav_color,best_friend_name命名人。我的查詢應該如何添加一個新列,這是他們最好的朋友最喜歡的顏色,即best_friend_fav_color?Python熊貓數據框搜索行之間的次關係

我的數據是這樣的:

{'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']} 

我們可以假設最好的朋友總是會在數據幀。

+0

您可以將您的數據和預期輸出添加到問題中,以使問題更清晰嗎? – maxymoo

+0

@maxymoo剛剛添加了數據和預期的輸出。謝謝。 –

回答

0

這是很容易做到:

先複製您的數據進行兩次DataFrames:

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

接下來,加入對人的名字兩個DataFrames和最好的朋友的名字:

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'。

+0

非常感謝! –