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

将DataFrame末尾行追加到字典嵌套的DataFrame时出现KeyError如何解决

问题原因
  • 直接抛出KeyError: 1的核心原因是你初始化的d1是空字典,不存在键为1、2等的对应值(也就是你提到的存储的多份DataFrame),直接访问d1[i]自然会触发键不存在的报错。
  • 即使你提前给d1填充了DataFrame,现有写法也达不到追加效果:pandas的append方法是非原地修改的方法,执行后会返回新的DataFrame,不会修改原对象,必须赋值接收返回值才会生效。另外pandas 1.4及以上版本已经正式弃用append方法,更推荐用pd.concat做数据追加。
解决方案

首先要保证操作前d1已经填充了你需要修改的所有DataFrame,再执行追加逻辑,参考代码如下:

import pandas as pd 

# 先构造存储多份DataFrame的d1,此处为示例初始值,你可以替换成自己的实际数据
d1 = {
    1: pd.DataFrame({"A": ["A1_test"], "B": ["B1_test"], "C": ["C1_test"], "D": ["D1_test"]}),
    2: pd.DataFrame({"A": ["A2_test"], "B": ["B2_test"], "C": ["C2_test"], "D": ["D2_test"]}),
    3: pd.DataFrame({"A": ["A3_test"], "B": ["B3_test"], "C": ["C3_test"], "D": ["D3_test"]}),
}

df1 = pd.DataFrame(
    {
        "A": ["A0", "A1", "A2", "A3"],
        "B": ["B0", "B1", "B2", "B3"],
        "C": ["C0", "C1", "C2", "C3"],
        "D": ["D0", "D1", "D2", "D3"],
    },
    index=[0, 1, 2, 3]
)

# 提前取出df1最后一行,避免循环中重复计算
last_row = df1.tail(1)

# 遍历d1所有元素,完成追加
for key, df in d1.items():
    # ignore_index参数可以根据你是否需要重置索引的需求调整
    d1[key] = pd.concat([df, last_row], ignore_index=True)
    print(f"d1[{key}] 内容:")
    print(d1[key])
    print("-"*20)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:15:02