熊猫源代码导入多个模块

时间:2019-02-05 09:43:46

标签: python python-3.x pandas cython pandas-groupby

我正在查看熊猫的源代码here,发现以下语句有点奇怪:

from pandas._libs import NaT, groupby as libgroupby, iNaT, lib, reduction

似乎它将Nat和groupby这两个库导入了多个模块(libgroupby,iNaT,lib,reducing)。

  1. 我去了pandas._libshere,但是没有找到任何名称为NaT的模型。确实有一个groupby.pyx,我假设是groupby库?

  2. 导入的库数量可以少于导入的模块吗?这是如何运作的?根据我过去的理解,我们可以做import a as b,但是我们不能做import a as b, c

1 个答案:

答案 0 :(得分:2)

它从pandas._libs实际上导入了5个方法/类/模块:

  1. NaT,
  2. grouby作为libgroupy(因此您现在将在脚本中使用libgroupy)
  3. iNaT
  4. lib
  5. 减少

现在NaT文件夹中确实不存在iNaT_libs,但是由于它们是从{{1}的其他位置导入的,因此不会出现导入错误。 }的_libs。
每当从软件包或其子软件包中导入某些内容时,软件包的__init__.py都会隐式执行。
因此,将执行__init__.py内的__init__.py,其中_libs是从软件包NaT, iNaT etc.导入的,因此也可以从.tslibs软件包中导入它们。
现在,如果您要在.tslibs文件夹中查找.libsNaT,将不会找到它,但是如果您查看iNaT的{​​{1}},则将请参见此处__init__.py.tslibs是从NaT导入的,因此,如果您这次查看该文件,则将在其中找到iNaT.nattype的定义

您可以查看docs以获得更好的解释


您可以这样导入它,然后可能更容易了解发生了什么事情:

NaT

此导入将与您的问题中的import语句完全相同。