python - 在 Python 中比较 DataFrame 和合并列之间的值
问题描述
我有两个 pandas DataFrame,其中第一个 DataFrame 有两列:“a”和“id”,第二个 DataFrame 有两列:“id”和“color_value”。我想比较两个 DataFrame 之间的 id,如果匹配,则在第一个 DataFrame 中添加一个具有正确 color_value 的列。本质上,我使用第二个 DataFrame 作为查找表来查找正确的 ID 并将其与其对应的颜色值匹配。
见下文。
df_1 = pd.DataFrame({'a': [1, 2, 3, 4, 5], 'id': ['001', '002', '001', '004', '003']})
df_2 = pd.DataFrame({'id': ['001', '002', '003', '004'], 'color_value': ['blue', 'red', 'yellow', 'orange']})
so df1:
a id
1 001
2 002
3 001
4 004
5 003
df2:
id color_value
001 blue
002 red
003 yellow
004 orange
I need a way to match up the IDs from df1 and df2 and add the color_value column to df1, so the result is:
df1:
a id color_value
1 001 blue
2 002 red
3 001 blue
4 004 orange
5 003 yellow
解决方案
您可以通过设置df_2
with id
as index using .set_index()
(作为映射的键) 并获取color_value
列 (作为映射的值) 来形成映射。
然后,您可以使用 映射id
到df_1
映射中.map()
,如下所示:
df_1['color_value'] = df_1['id'].map(df_2.set_index('id')['color_value'])
或将其分解为 2 行以获得更好的可读性/更易于理解,如下所示:
mapping = df_2.set_index('id')['color_value']
df_1['color_value'] = df_1['id'].map(mapping)
结果:
print(df_1)
a id color_value
0 1 001 blue
1 2 002 red
2 3 001 blue
3 4 004 orange
4 5 003 yellow
推荐阅读
- python-3.x - 使用 NN 进行回归的 Numpy 实现
- python - 用于捕获曲目的 Spotify URI 或 Web 链接的正则表达式字符串
- sql - 如何有效地识别特定列的不同记录
- ios - 如何为谷歌地图中心按钮分配明暗模式?
- javascript - Semantic UI React Segment 的前端溢出
- flutter - 在颤动中将数据从小部件发送到另一个小部件
- python - 使用 torch.optim 时带有 torch.mm 的函数显示错误
- c++ - C++ 如果括号 [] 运算符在赋值的 LHS 和 RHS 上,我可以重载它来做不同的事情吗?
- c# - c#中的同一个类中是否可以有多个具有不同声明的Main方法
- ios - IOS 发布 ITMS-90117:缺少路由应用程序覆盖文件