python - 如何通过将 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# 与名称不匹配请见谅)
解决方案
您可以先构建一个查找字典,然后使用 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
推荐阅读
- amazon-ecs - 如何在 AWS ECS 容量提供程序中计算目标容量百分比
- intellij-idea - Intellij Rust 插件不正确的“未解决的参考”错误
- arrays - PostgreSQL:比较两个数组是否存在第二个数组中的任何一个值
- javascript - 将json字符串化为多个数组的逻辑
- ebay-api - eBay oauth 令牌(和刷新令牌)有多长?
- vue.js - 如何根据浏览器动态支持的内容在使用网格布局的模板和使用 Flex 的模板之间切换?
- c++ - 如何在 C++ 中用相反的小写字母替换字符串中的每个小写字母?
- php - PHP 响应真/假和正确的 IF 语句
- mongodb - 使用MongoDB存储大量文档的生产最佳实践是什么?
- anglesharp - 在 AngleSharp c# 或 vb 中循环父节点内的子节点