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

非索引匹配的Pandas DataFrame更新合并:用df1更新df2指定位置数据

操作实现方案

核心逻辑是通过pandas的位置索引选取df2的指定区间,直接赋值覆盖即可,为了避免索引对齐导致的异常,直接提取df1的数值数组进行赋值。

核心代码

# 从df2的索引383位置开始,替换对应长度的col_1列值
df2.iloc[383 : 383 + len(df1), df2.columns.get_loc("col_1")] = df1["col_1"].values

代码说明

  • 用iloc按绝对位置选取数据,不受df2本身自定义索引的影响,确保起始位置和替换范围准确
  • 切片383 : 383 + len(df1)刚好匹配df1的行数,保证所有df1的数值都能对应写入df2的指定区间
  • 末尾加.values提取df1列的numpy数组,跳过pandas的索引对齐逻辑,避免两个df索引不一致时出现空值
  • df2.columns.get_loc("col_1")是通过列名获取列的位置索引,比直接写列序号兼容性更好

可选操作:保留原始df2

如果你不想修改原始df2,可以先做深拷贝再操作:

import pandas as pd

df2_updated = df2.copy(deep=True)
df2_updated.iloc[383 : 383 + len(df1), df2_updated.columns.get_loc("col_1")] = df1["col_1"].values

结果验证

替换完成后可以执行以下代码对比验证:

print(df1["col_1"].head(10).equals(df2.iloc[383:393, df2.columns.get_loc("col_1")]))
# 返回True即说明替换正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:27:00