首页 > 解决方案 > 如何通过将 df ID# 替换为另一个 df 的名称来创建新的 df?

问题描述

我必须 DF 一个只包含 ID#,另一个是更全面的 DF,包含姓名、薪水、年龄和 ID#

df1 看起来像这样

Name           Salary     ID     Age   City 
Sam            52000      542       52    NYC
Bob            15000      451       21    LA
Sam            72000      556       21    SF

其中 df 2 与 ID 看起来像这样#

 Index     1     2   3     4    
 a         542  352  581   521   
 b         451  215  556   451   
 c         540  332  511   121   
 d         451  515  156   951   

请注意一些 ID# 收获,这是预期的

如何获得 df2 但只是用名称替换它们(有些重复我不想放弃它们)

我的目标是拥有一个看起来像这样的新 df3

df3

Index     1    2     3       4
 a        Sam  Bill  Le     Sam
 b        Mike Jane  Kevin  Le
 c        Jame Kerry David  Mike
 d        Andy Steve Jane   Andy 

(请注意我的示例 id# 与名称不匹配请见谅)

标签: pythonpandasdataframepandas-groupby

解决方案


您可以先构建一个查找字典,然后使用 applymap

name_map = df.set_index('ID')['Name'].to_dict()
df2.applymap(name_map.get)

    1       2       3       4
0   Sam     None    None    None
1   Bob     None    Sam     Bob
2   None    None    None    None
3   Bob     None    None    None

推荐阅读