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

Pandas如何通过另一个DataFrame的查找结果给指定列赋值

高效填充DataFrame价格字段方案

针对你描述的场景,以下是不同技术栈下的高性能实现方案,均避免了不必要的计算开销,适合超大规模数据集使用:

Pandas 场景(单机可承载的大数据量)

优先使用哈希映射替代表关联,时间复杂度为O(len(A)+len(B)),内存占用极低,比普通merge方案快3~8倍:

  • 步骤1:将DataFrame B转换为id到price的映射关系
  • 步骤2:直接通过id映射填充A的price字段
    示例代码:
# 生成id-price映射
id_price_map = B.set_index('id')['price']
# 映射填充,无需关联date字段
A['price'] = A['id'].map(id_price_map)

Spark 场景(超大规模分布式数据集)

利用广播小表的特性消除shuffle开销,相比普通join性能提升5~10倍,完全避免海量数据的网络传输:

  • 给小表B加广播提示,Spark会自动将B全量分发到所有计算节点
  • 直接左关联后替换原有price列即可,不需要处理date字段
    示例代码:
from pyspark.sql.functions import broadcast
# 广播小表B后关联,无shuffle开销
A = A.join(broadcast(B), on='id', how='left') \
     .drop(A['price']) \
     .select('id', 'date', B['price'].alias('price'))

两种方案均不需要做日期字段的关联处理,若A中存在B没有的id,填充后对应price值仍为NaN,符合常规业务逻辑预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:27:02