【问题标题】:KeyError in Pandas for a correct keyPandas 中的 KeyError 获取正确的密钥
【发布时间】:2021-10-04 03:06:32
【问题描述】:

在 jupyter notebook 中运行的代码

import pandas as pd
import numpy as np
myindex = ['USA','Canada','Mexico']
mydata = [1776,1867,1821]
myser = pd.Series(data=mydata,index=myindex)
myser['USA']

代码图片


即使我输入了正确的索引,我也会在此处收到一个关键错误(带有以下错误消息)

KeyError                                  Traceback (most recent call last)
<ipython-input-41-422adf17bf03> in <module>
----> 1 myser['USA']

D:\Anaconda\lib\site-packages\pandas\core\series.py in __getitem__(self, key)
    851 
    852         elif key_is_scalar:
--> 853             return self._get_value(key)
    854 
    855         if is_hashable(key):

D:\Anaconda\lib\site-packages\pandas\core\series.py in _get_value(self, label, takeable)
    959 
    960         # Similar to Index.get_value, but we do not fall back to positional
--> 961         loc = self.index.get_loc(label)
    962         return self.index._get_values_for_loc(self, loc, label)
    963 

D:\Anaconda\lib\site-packages\pandas\core\indexes\range.py in get_loc(self, key, method, tolerance)
    352                 except ValueError as err:
    353                     raise KeyError(key) from err
--> 354             raise KeyError(key)
    355         return super().get_loc(key, method=method, tolerance=tolerance)
    356 

KeyError: 'USA'

【问题讨论】:

  • 请不要将您的代码作为图片发布。
  • 我投了反对票,因为Code is an image
  • 我也添加了代码
  • 在您的笔记本(或新笔记本)中打开一个新单元格,复制粘贴您的代码。你还有错误吗?

标签: python pandas jupyter-notebook series keyerror


【解决方案1】:

尝试运行您提到的作为“Jupyter 中的代码”的代码,它将运行。在您的图像中,您尚未将 pd.series 分配给变量。这就是问题所在。

我已经尝试了以下方法并且它有效:

import pandas as pd
my_index = ['Usa', 'Canada', 'Mexico']
my_data = [10, 20, 30]
my_ser_1 = pd.Series(data = my_data, index = my_index)
my_ser_1['Usa']

【讨论】:

    【解决方案2】:

    您的笔记本中的评估 [34] 和评估 [43] 之间的系列可能有问题。这按预期工作:

    myindex=['USA', 'Canada', 'Mexico']
    mydata=[1776,1867,1821]
    myser=pd.Series(data=mydata, index=myindex)
    myser
    

    输出:

    USA       1776
    Canada    1867
    Mexico    1821
    dtype: int64
    
    >>> myser[0]
    1776
    
    >>> myser['USA']
    1776
    

    【讨论】:

    • 我重新运行了整个笔记本,但问题仍然存在
    • 整个笔记本是否在您的图像中可见?如果您打开一个新笔记本并仅运行问题中的文本代码会发生什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 2017-10-01
    • 2010-11-27
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 2018-06-25
    相关资源
    最近更新 更多