如何按索引用第二个DataFrame的值替换第一个DataFrame对应值
按索引匹配替换DataFrame指定列值
示例数据构造
先还原你提供的两个DataFrame:
import pandas as pd df1 = pd.DataFrame({'JanDivisor': ['G2/59']}, index=[0]) df2 = pd.DataFrame({'JanDivisor': ['G2/44']}, index=[0])
方法一:使用update()快速替换
update()方法会自动对齐索引和列名,仅用df2中存在的索引-列值覆盖df1对应位置,未匹配到的内容保持不变:
# 直接修改原df1 df1.update(df2) # 查看结果 print(df1)
输出结果:
JanDivisor 0 G2/44
如果不想修改原df1,先复制一份再操作:
df1_copy = df1.copy() df1_copy.update(df2)
方法二:用loc手动精准替换
适合需要自定义替换范围(比如指定列、添加筛选条件)的场景:
# 获取两个DataFrame共有的索引 common_idx = df1.index.intersection(df2.index) # 按索引替换指定列的值 df1.loc[common_idx, 'JanDivisor'] = df2.loc[common_idx, 'JanDivisor']
两种方法都能实现「仅替换df1中与df2索引匹配的行,其余行保留原样」的需求。如果df2包含多个索引(比如df1有索引0、1,df2有索引0、2),只会替换df1中存在的匹配索引行,不会新增或删除df1的行。
内容的提问来源于stack exchange,提问作者Mark AndrewHamilton
相关产品推荐
相关产品推荐

