python - Pandas源码导入多个模块

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

我正在查看pandas源代码here ,我发现下面的说法有点奇怪:

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

似乎它导入了 Nat 和 groupby 这两个库,作为多个模块(libgroupby、iNaT、lib、reduction)。

  1. 我访问了 pandas._libshere ,但我没有找到任何名为 NaT 的模型。确实有一个groupby.pyx,我认为它是groupby库?

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

最佳答案

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

  1. NaT,
  2. grouby 作为 libgroupy(因此在您的脚本中您现在将使用 libgroupy)
  3. iNaT
  4. 减少
<小时/>

现在NaTiNaT确实不存在于_libs中文件夹,但不会给出导入错误,因为它们是从 __init__.py 中的其他位置导入的。 _libs。
__init__.py每当从该包或其子包导入某些内容时,包的 都会隐式执行。
所以__init__.py里面_libs将执行,其中 NaT, iNaT etc.从包 .tslibs 导入因此使它们可以从 .libs 导入也打包。
现在,如果您要查找 NaTiNaT在 .tslibs 文件夹中,您将找不到它,但如果您查看 __init__.py.tslibs你会在这里看到NaTiNaT是从 .nattype 导入的,所以如果这次你查看该文件,你会发现 NaT 的定义和iNaT在那里。

您可以查看docs为了更好的解释

<小时/>

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

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

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

关于python - Pandas源码导入多个模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54531476/

相关文章:

python - 将两个数据框相乘 Python

python - 单击按钮时更改 OptionMenu 的选项

python - 元素出现一定次数后删除

python - 在 Python 中正确渲染具有给定字体的文本并准确检测其边界

python - 检查字符串是整数还是 float

python - 将内联模型添加到 django 管理站点

python - 在 python3 中绝对导入,但找不到我的包

python - 基于标点符号列表替换数据框中的标点符号

python - 迭代两个等长列表并将每对的最大值附加到新列表的更简单/首选方法?

python : While True or False