python - 如何使用第二个数据帧的列名和第一个数据帧的两列中的值匹配两个数据帧
问题描述
假设 df_1 如下:
col_1 | col_2 | col_3 | ...
12338 | MD | ...
13438 | LG | ...
62248 | SM | ...
92338 | SI | ...
32818 | SM | ...
.
.
.
此外,这里是 df_2:
col_1 | MD | LG | SM | SI
12338 | 10 | 29 | 8 | 7
12339 | 15 | 26 | 18 | 17
13438 | 78 | 18 | 77 | 1670
.
.
.
目标是根据 df_2 和 col_1 和 col_2 找到 df_1 中每一行的目标值。例如,对于 df_1 的第一行,目标值为 10,因为 col_1 为 12338,并且使用 df_2 中的 MD 列。
对于 df_2 的第二行,目标值为 18,因为 col_1 为 13438,并且使用 df_2 中的 LG 列。
col_1 | col_2 | Target | col_3 | ...
12338 | MD | 10 | ...
13438 | LG | 18 | ...
.
.
.
我想对一个非常大的数据框执行上述过程。
我知道我可以使用合并甚至使用一些 if 条件来做到这一点,但我正在寻找一种非常有效和新颖的方式,但速度太快了。任何创新的想法将不胜感激。
解决方案
检查与lookup
df1['Target']=df2.set_index('col_1').lookup(df1.col_1, df1.col_2)
推荐阅读
- security - Mac Catalina 的 Heroku 安装 - 需要更新。解决方法?
- python - 有没有办法在应用自适应阈值后使背景清除任何东西并只留下最大的轮廓
- jquery - 在角度8中的角度组件文件(.ts)中编写jQuery函数
- swift - 以相反顺序加载的集合视图
- sockets - 从客户端读取长消息
- javascript - Bootstrap 4 导航栏 - 在香草 JS 中单击导航链接时折叠
- php - laravel 中的错误消息翻译问题
- css - 如何更改 JavaFX 标签中文本的颜色
- android - 为我的片段制作可重用 xml 布局的正确方法是什么?
- python - 如何在 Python 中的任何数据类型中提供输入?