python中错误的数千行是什么



我不确定当python错误打印line 1500 in __getitem__line 1913, in _getitem_axis时意味着什么-这些行来自哪里?

例如,

Traceback (most recent call last):
File "script.py", line 6, in <module>
us = df.loc['origin' == 'US']
File "script.py", line 1500, in __getitem__
return self._getitem_axis(maybe_callable, axis=axis)
File "script.py", line 1913, in _getitem_axis
return self._get_label(key, axis=axis)
File "script.py", line 141, in _get_label
return self.obj._xs(label, axis=axis)
File "script.py", line 3575, in xs
loc = self.index.get_loc(key)
File "script.py", line 2604, in get_loc
return self._engine.get_loc(self._maybe_cast_indexer(key))
File "script.py", line 108, in pandas._libs.index.IndexEngine.get_loc
File "script.py", line 129, in pandas._libs.index.IndexEngine.get_loc
File "script.py", line 91, in pandas._libs.index.Int64Engine._check_type
KeyError: False

p.S.如果你能使用人类语言或通过类比/例子进行解释,请不胜感激

这些函数是Python内置支持的一部分;许多例程很长,或者是长模块中的一个函数。点是命名约定的一部分:包、模块、子模块。。。作用例如

pandas._libs.index.IndexEngine.get_loc

get_loc是PANDAS数据帧包中的一个基本位置检索功能。

这是一个堆栈跟踪。它不仅显示实际错误直接发生在哪里,还显示程序在发生错误时正在做什么。

  • 代码df.loc['origin' == 'US'](第6行(位于跟踪的顶部,这意味着这是根本原因,但这本身并不是错误。这将计算'origin' == 'US'False,因为这是一个简单的字符串比较,并且字符串不相等,然后它将计算df.loc[False]
  • 评估这一点需要在对象df.loc中查找密钥False。这将调用__getitem__方法,每当您使用语法a[b]访问密钥时都会调用该方法
  • CCD_ 12方法具有调用名为CCD_ 14的方法的线路CCD_。这是文件的第1500行
  • _getitem_axis方法有一行return self._get_label(key, axis=axis),调用方法_get_label。这是文件的第1913行
  • 。。。等等
  • 最后,方法pandas._libs.index.Int64Engine._check_type检查密钥的类型。密钥是False,属于bool类型。据推测,对于您正在进行的查找,这不是一个有效的类型,因此_check_type方法会引发一个KeyError

在一般术语和"人类语言"中,python是一种高级编程语言。这意味着,当把输入控制台的英文单词翻译成机器作为指令的比特时,它对程序员隐藏了很多。以简单的乘法为例。你可能认为2 * 2中的星号*符号意味着乘法是理所当然的,但你的计算机不能也不会认为这是理所当然的。不,必须有一个文件来定义代码中ASCII符号*的使用,以及遇到时如何将两个数字相乘(或者如何执行类似2 * 'string'的操作(。所有这些较低级别的定义都位于机器上python安装的某个位置。当你以英语单词的形式输入指令时,编译器必须逐行解析,在python安装中查找所有这些较低级别的定义,并根据这些定义,将你的python转换为计算机可以实际使用的东西。在进行这个密集的过程中,对于一个非常简单的python语句,可能会遇到许多不同的函数和定义,可能涉及多个文件和安装的库。如果在此过程中遇到编译器不知道如何继续的问题,则会引发错误。抛出的错误看起来可能很复杂,但正如其他人所描述的那样,它包含了编译器在发现错误时所查看内容的整个跟踪。这在调试程序时会有很大的帮助(甚至可能在必须导入的库中发现错误等(。

希望这能有所帮助!