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

Pandas DataFrame列间数据迁移:按df2价格差异更新df1字段

Pandas 跨表对比批量更新价格方案

全矢量化操作实现,无Python层遍历,可适配千万级以上数据集,性能远高于行遍历或apply方案。

完整实现代码:

import pandas as pd

# 1. 构建df2的Reference_Code到Price_Now的映射,索引查询效率远高于逐行匹配
df2_idx = df2.set_index("Reference_Code")["Price_Now"]

# 2. 对齐df1的Reference_Code拉取df2的对应价格
df1["df2_price"] = df1["Reference_Code"].map(df2_idx)

# 3. 生成价格不一致的行掩码,额外增加notna判断可过滤df2中不存在的编码,避免误更新
diff_mask = (df1["Price_Now"] != df1["df2_price"]) & df1["df2_price"].notna()

# 4. 仅更新价格不一致的行
df1.loc[diff_mask, "Last_Price"] = df1.loc[diff_mask, "Price_Now"]
df1.loc[diff_mask, "Price_Now"] = df1.loc[diff_mask, "df2_price"]

# 5. 删除临时辅助列
df1 = df1.drop(columns="df2_price")

效率说明:

  • 所有操作均为pandas底层C实现的矢量化运算,单表千万行量级操作耗时通常在秒级
  • 内存占用可控,仅新增1列临时辅助数据,无需额外复制全量数据集
  • 如需进一步压缩内存开销,可在处理完成后对浮点数列做精度降级:df1["Last_Price"] = pd.to_numeric(df1["Last_Price"], downcast="float")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:27:03