You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python pandas如何高效实现小表与大表的关联及字段计算

Pandas按匹配键做列运算的更优实现

原始数据与需求

现有两个DataFrame:

import pandas as pd
df_1 = pd.DataFrame({'id': [1,1,1,1,1,2,2,2,2,2], 'x': [0,1,2,3,4,5,6,7,8,9]})
df_2 = pd.DataFrame({'y': [10,100]}, index=[1,2])

需求为按id字段匹配,将df_1的x字段与df_2中对应id的y字段相乘,得到新列x_new。
原有merge写法可以得到正确结果,但会生成额外的临时合并表,存在不必要的内存开销,写法也不够简洁。

最优实现

直接使用Series.map()做值映射即可,无需做全表合并:

df_1['x_new'] = df_1['id'].map(df_2['y']) * df_1['x']

方案优势

  • 无中间临时表生成,内存占用更低,数据量越大性能优势越明显
  • 逻辑直观:直接按id匹配对应y值,和x做原生向量化乘法
  • 代码更简洁,不需要额外做索引转换、数据对齐操作

运行结果和原有方案完全一致:

id  x  x_new
0   1  0      0
1   1  1     10
2   1  2     20
3   1  3     30
4   1  4     40
5   2  5    500
6   2  6    600
7   2  7    700
8   2  8    800
9   2  9    900

如果后续需要做多字段的匹配运算,也可以用df_1.join(df_2, on='id')先把y列关联到df_1上再做后续计算,但单字段乘法场景下map写法是效率最高的选择。

内容的提问来源于stack exchange,提问作者Serge Kashlik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 03:57:22