首页 > 解决方案 > KeyError(f"None of [{key}] are in the [{axis_name}]") 从 python 3.6 升级到 3.8 后

问题描述

我刚搬到新的 MacBook Pro,安装了 python 3.8 并 pip 安装了我在旧 MBP 中的软件包。我在旧 MBP 中运行 python 3.6。我现在在 python 脚本中遇到错误,我相信唯一的区别是 python 3.8(而不是 python 3.6)

错误是 ... KeyError(f"[{key}] 中没有 [{axis_name}]")

下面代码中定义绘图的最后一行是因错误而被调用的那一行。附加的屏幕截图显示了打印语句的输出和错误。

感谢任何帮助,因为我现在正碰壁。TIA。

print("Index")
print(df_transpose_deaths.index)

print("Columns")
print(df_transpose_deaths.columns)

print("df transpose deaths")
print(df_transpose_deaths)

xindex = df_transpose_deaths.index
ycolumns = df_transpose_deaths.columns
deaths_world_plot = df_transpose_deaths.plot(x = xindex, y = ycolumns, kind='line', xticks=x_ticks, legend=False)

带有错误消息的终端窗口屏幕截图

标签: python-3.xmatplotlib

解决方案


我能够实施一个修复程序,让这个脚本在我的新 MBP 和 python 3.8 上再次工作(在旧 MBP 上使用 python 3.6)。

我的绘图语句正在做的是获取 df 并将 df 索引用作“x”的值,然后其余列是沿“y”绘制的线。我推测错误是说索引值没有作为列的一部分找到。因此,我创建了一个具有新名称的新列,并将索引的值设为新列的值。然后,我将这个新列用作绘图语句中的“x”。对于绘图语句中的“y”,我将列名放在一个列表中,并将其用于“y”。因此,我假设 python 3.6 和 python 3.8 之间在能够在 plot 语句中引用 .index 和 .columns 值方面发生了一些变化。

有效的新代码。

ycolumns = df_transpose_deaths.columns
df_transpose_deaths['MYDATE'] = df_transpose_deaths.index
deaths_world_plot = df_transpose_deaths.plot(x = 'MYDATE', y = ycolumns, kind='line', xticks=x_ticks, legend=False)

推荐阅读