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

如何用新DataFrame更新原Pandas DataFrame整行?判断操作类型

如何更新原DataFrame同步变更?

首先,咱们先明确需求:要把新DataFrame里的变更(Mike的状态和数据、Fred的状态和数据)同步到原DataFrame,同时保留原DF里其他行(Bob、Ted)的内容。

具体实现步骤

这里最直接的方法是用Pandas的update()方法,它专门用来基于索引匹配,用新数据覆盖原DataFrame里的对应行。话不多说,上代码:

import pandas as pd

# 定义原DataFrame
original_df = pd.DataFrame({
    'Name': ['Mike', 'Bob', 'Ted', 'Fred'],
    'Status': ['yes', 'no', 'yes', 'yes'],
    'Data': [123, 456, 789, None]
})

# 定义新DataFrame
new_df = pd.DataFrame({
    'Name': ['Mike', 'Fred'],
    'Status': ['no', 'no'],
    'Data': [345, 123]
})

# 1. 把两个DF都设置为以Name为索引,这样能精准匹配需要更新的行
original_df.set_index('Name', inplace=True)
new_df.set_index('Name', inplace=True)

# 2. 执行更新:用新DF的内容覆盖原DF对应索引的行
original_df.update(new_df)

# 3. 恢复原来的整数索引(如果需要的话)
original_df.reset_index(inplace=True)

print(original_df)

运行后就能得到你想要的预期输出:

Name Status   Data
0   Mike     no  345.0
1    Bob     no  456.0
2    Ted    yes  789.0
3   Fred     no  123.0

属于replace还是join?

都不属于标准的replace或join函数场景:

  • replace()通常是用来替换DataFrame里的特定值(比如把所有的"yes"换成"no"),不是基于行匹配的批量更新。
  • join()是用来合并两个不同结构的DataFrame(比如按索引拼接列),而咱们这里是更新已有行的内容,不是新增列或行。

这个操作更偏向「基于索引的行级替换更新」,用update()方法是最贴合需求的选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:52:28