我需要根據不同列中的匹配來填充一列。
資料框:
df = pd.DataFrame(np.array([[1000, 'Jerry', 'BR1','BR1'],
[1001, 'Sal', 'BR2', 'BR1'],
[1002, 'Buck', 'BR3', 'BR2'],
[1003, 'Perry','BR4','BR1']]),
columns=['ID', 'Name', 'Branch', 'Member of'])
我需要創建一個“老板”列。
- 老板被定義為
Name匹配Member of到列中的某個欄位后回傳Branch。
我可以這樣做:
df_bosses = df[['Name', 'Branch']].copy()
df_bosses.rename(columns={'Name':'Boss'},inplace=True)
df.merge(df_bosses, how="left", left_on="Member of", right_on="Branch")
這讓我到達了我想去的地方——只需要重命名一個列并洗掉另一個。
有沒有更有效的方法?
uj5u.com熱心網友回復:
試試這個:
df['Boss'] = df['Member of'].map(df.set_index('Branch')['Name'])
輸出:
>>> df
ID Name Branch Member of Boss
0 1000 Jerry BR1 BR1 Jerry
1 1001 Sal BR2 BR1 Jerry
2 1002 Buck BR3 BR2 Sal
3 1003 Perry BR4 BR1 Jerry
uj5u.com熱心網友回復:
我會做 replace
df['new'] = df['Member of'].replace(df.set_index('Branch')['Name'])
df
ID Name Branch Member of new
0 1000 Jerry BR1 BR1 Jerry
1 1001 Sal BR2 BR1 Jerry
2 1002 Buck BR3 BR2 Sal
3 1003 Perry BR4 BR1 Jerry
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/390574.html
