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

如何基于相同索引,用第二个DataFrame更新第一个DataFrame的指定列值

基于相同索引用第二个DataFrame更新第一个DataFrame的方法

原始数据

第一个DataFrame(df1):

A    B    C
0   a-1  b-1  c-1
1   a-2  b-2  NaN
2   a-3  b-3  NaN
3   a-4  b-4  c-4

第二个DataFrame(df2):

C
1   c-2
2   c-3

期望结果

A    B    C
0   a-1  b-1  c-1
1   a-2  b-2  c-2
2   a-3  b-3  c-3
3   a-4  b-4  c-4

解决方案

方法1:使用update()方法

update()会根据索引和列名匹配,用df2的值覆盖df1对应位置的内容,默认直接修改原DataFrame(如需保留原数据可先复制)。

示例代码:

import pandas as pd
import numpy as np

# 构造原始DataFrame
df1 = pd.DataFrame({
    'A': ['a-1', 'a-2', 'a-3', 'a-4'],
    'B': ['b-1', 'b-2', 'b-3', 'b-4'],
    'C': ['c-1', np.nan, np.nan, 'c-4']
})

df2 = pd.DataFrame({'C': ['c-2', 'c-3']}, index=[1, 2])

# 执行更新(如需保留原df1,先复制:df_updated = df1.copy())
df1.update(df2)
print(df1)

方法2:使用combine_first()方法

该方法会用df2的值填充df1中的缺失值,返回新的DataFrame,不修改原数据。

示例代码:

df_updated = df1.combine_first(df2)
print(df_updated)

方法3:通过loc索引直接赋值

针对指定的索引和列手动赋值,适合明确知道更新范围的场景。

示例代码:

df1.loc[df2.index, 'C'] = df2['C']
print(df1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:59:57