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

如何基于相同username用新DataFrame替换旧DataFrame的loan_balance值

最优实现方法

直接使用 pandas 内置的 update() 方法即可高效完成需求,该方法专门针对「基于匹配键更新指定列」的场景,代码简洁且性能优异(基于向量化操作,远快于循环遍历)。

具体步骤与代码

import pandas as pd

# 原始数据
old_data_df = pd.DataFrame({
    'username': ['username1', 'username7'],
    'loan_balance': [10, 14],
    'age': [18, 8]
})

new_data_df = pd.DataFrame({
    'username': ['username1', 'username2'],
    'loan_balance': [1, 4]
})

# 1. 将 username 设置为索引,确保按用户名匹配更新
old_data_df = old_data_df.set_index('username')
new_data_df = new_data_df.set_index('username')

# 2. 执行更新:仅替换匹配到的 username 对应的 loan_balance 值
old_data_df.update(new_data_df)

# 3. 恢复原有的整数索引(可选,若不需要保留 username 为索引则执行)
old_data_df = old_data_df.reset_index()

print(old_data_df)

输出结果

username  loan_balance  age
0  username1            1.0   18
1  username7           14.0    8

方法说明

  • update() 会原地修改 old_data_df,仅更新两个 DataFrame 中索引(此处为 username)匹配的行;
  • 仅更新 new_data_df 中存在的列(即 loan_balance),old_data_df 中的其他列(如 age)完全不受影响;
  • new_data_df 中不存在的 username(如 username7)对应的行不会被改动;
  • 若不需要原地修改,可以先复制 old_data_df 再操作:updated_df = old_data_df.set_index('username').copy(); updated_df.update(new_data_df.set_index('username'))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:35:27