亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 ID 與 pandas DataFrame 上的名稱相匹配

將 ID 與 pandas DataFrame 上的名稱相匹配

揚帆大魚 2023-10-31 14:02:41
我有一個包含 3 列的 DataFrame:ID、BossID 和 Name。每行都有一個唯一的 ID 和相應的名稱。BossID 是該行人員的老板的 ID。假設我有以下數據框:df = pd.DataFrame({'id':[1,2,3,4,5], 'bossId':[np.nan, 1, 2, 2, 3],                    'name':['Anne Boe','Ben Coe','Cate Doe','Dan Ewe','Erin Aoi']})所以在這里,Anne 是 Ben 的老板,Ben Coe 是 Cate 和 Dan 的老板,等等。現在,我想要另一個列,其中包含每個人老板的名字。期望的輸出是:    id  boss    name    boss_name0   1   NaN     Anne    NaN1   2   1.0     Ben     Anne2   3   2.0     Cate    Ben3   4   2.0     Dan     Ben4   5   3.0     Erin    Cate我可以使用丑陋的雙 for 循環來獲得輸出。有沒有更干凈的方法來獲得所需的輸出?
查看完整描述

3 回答

?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

這應該有效:

bossmap = df.set_index('id')['name'].squeeze()
df['boss_name'] = df['bossId'].map(bossmap)


查看完整回答
反對 回復 2023-10-31
?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

您可以設置id為索引,然后使用pd.Series.reindex

df = df.set_index('id')

df['boss_name'] = df['name'].reindex(df['bossId']).to_numpy() # or .to_list()


? id? bossId? ? ? name boss_name

0? ?1? ? ?NaN? Anne Boe? ? ? ?NaN

1? ?2? ? ?1.0? ?Ben Coe? Anne Boe

2? ?3? ? ?2.0? Cate Doe? ?Ben Coe

3? ?4? ? ?2.0? ?Dan Ewe? ?Ben Coe

4? ?5? ? ?3.0? Erin Aoi? Cate Doe


查看完整回答
反對 回復 2023-10-31
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

  • 'name'為和創建一個單獨的數據框'id'。

    • 重命名'name'并設置'id'為索引

  • .merge?df使用新的數據框

import pandas as pd


# test dataframe

df = pd.DataFrame({'id':[1,2,3,4,5], 'bossId':[np.nan, 1, 2, 2, 3], 'name':['Anne Boe','Ben Coe','Cate Doe','Dan Ewe','Erin Aoi']})


# separate dataframe with id and name

names = df[['id', 'name']].dropna().set_index('id').rename(columns={'name': 'boss_name'})


# merge the two

df = df.merge(names, left_on='bossId', right_index=True, how='left')


# df

? ?id? bossId? ? ? name boss_name

0? ?1? ? ?NaN? Anne Boe? ? ? ?NaN

1? ?2? ? ?1.0? ?Ben Coe? Anne Boe

2? ?3? ? ?2.0? Cate Doe? ?Ben Coe

3? ?4? ? ?2.0? ?Dan Ewe? ?Ben Coe

4? ?5? ? ?3.0? Erin Aoi? Cate Doe


查看完整回答
反對 回復 2023-10-31
  • 3 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號