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

如何将DataFrame首行起数据追加到另一DataFrame第11行并修复KeyError

报错根因
  • 触发KeyError: None of [Index(...)] are in the [columns]是因为你要筛选的NAZIV ARTIKLA、EAN CODE列,在antonio_trade或Dobavljaci中不存在,通常是列名带隐藏前后空格、拼写/大小写不匹配导致,另外你写列选择代码时在"EAN CODE"后多写了一个多余逗号,也可能触发解析异常。
  • 原有代码逻辑不符合需求:DataFrame.append()是直接把两个表做首尾纵向拼接,无法指定插入位置,且该方法在Pandas 2.0及以上版本已经弃用,不建议使用。
  • 需求中“把第一个DataFrame首行开始的数据,合并到另一个DataFrame第11行起始位置”属于按位置插入拼接,不能用普通追加逻辑实现。
解决方法

第一步:修复列名报错

先执行代码打印两个DataFrame的真实列名,对照修正拼写,统一清理列名前后的隐藏空格,从根源解决KeyError:

# 打印两个表的全部列名,确认目标列实际写法
print(antonio_trade.columns.tolist())
print(Dobavljaci.columns.tolist())

# 批量清理所有列名的前后空格,避免空格导致的匹配失败
antonio_trade.columns = antonio_trade.columns.str.strip()
Dobavljaci.columns = Dobavljaci.columns.str.strip()

第二步:按位置拼接实现需求

Pandas默认位置索引从0开始计数,把要插入数据的目标表拆成指定位置前、指定位置后两部分,按「目标表插入位置前的内容 + 待插入的第一个表数据 + 目标表插入位置后的剩余内容」的顺序拼接,就能实现指定位置插入合并的效果。

完整实现代码:

import pandas as pd

# 提取两个表需要的目标列,确保列名和上一步打印的结果完全一致
trade_data = antonio_trade[["NAZIV ARTIKLA", "EAN CODE"]]
target_data = Dobavljaci[["NAZIV ARTIKLA", "EAN CODE"]]

# 按位置切分目标表,iloc是按行号位置切分,不受自定义索引影响
# 行号从1开始计数、要从第11行开始插入新数据时,切分位置传10,即取前10行保留
part_before = target_data.iloc[:10, :]
part_after = target_data.iloc[10:, :]

# 按顺序拼接三部分,重置索引避免索引重复
Antonio_trade_merge = pd.concat([part_before, trade_data, part_after], ignore_index=True)

提示:如果需要保留原表前11行、从第12行开始插入新数据,把切分位置的数值改成11即可,根据实际需求调整切分参数。

内容的提问来源于stack exchange,提问作者Adi Šehić

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:18:40