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

如何在Python中基于主键用另一Pandas DataFrame替换特定单元格

解决方案

你的嵌套循环逻辑存在两个核心问题:

  1. 每次匹配到主键F时,你直接把df2的整列C/D/E赋值给df1的对应列,导致df1所有行的C/D/E都被替换成df2的列值,而非仅匹配的行。
  2. 嵌套循环处理12k行数据效率极低,完全违背了pandas的向量化操作设计理念。

正确实现方式

使用pandas的update方法结合索引匹配,高效完成精准替换:

import pandas as pd

# 假设已读取两个Excel文件为df1和df2
# 将主键列F设置为索引,让pandas通过索引快速匹配行
df1.set_index('F', inplace=True)
df2.set_index('F', inplace=True)

# 仅用df2的C、D、E列更新df1对应列(仅匹配索引的行会被更新)
df1.update(df2[['C', 'D', 'E']])

# 可选:将索引重置为普通列,恢复原表格结构
df1.reset_index(inplace=True)

验证结果

运行后df1会完全符合你的预期:

A   B   C   D   E   F
0  1   2  21  22  23   6
1  7   8  27  28  29  12
2 13  14  15  16  17  18

关键说明

  • update方法仅更新索引匹配的行,不匹配的行保持原数值不变
  • 向量化操作处理12k行数据速度极快,远优于嵌套循环
  • 若数据中存在重复的F值,需先去重(比如保留最新行),否则update会使用最后出现的匹配值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 23:47:19