Python和导入子模块-熊猫示例

n1k31t4

我试图在中使用pandas.tseries.holiday模块pandas,但由于某种原因,它没有显示出来。我尝试了以下方法:

import pandas as pd

pd.tseries.<TAB>

这确实给了我一个选项列表,但是holiday其中之一。根据的文档holiday,它应该和我上面尝试的一样简单。

这是在我系统的Python上。我在Jupyter中使用Anaconda进行了尝试,然后在Terminal甚至在Emacs中进行了尝试,但从未发现过。因此,它必须是我不知道的一般设计选择。我一直在寻找线索,但是我发现的所有信息都告诉我,导入整个模块或模块的一部分是主观选择-例如:可读性与名称空间污染等。

最终,我只是尝试手动导入它(下一步是holidaypandas git存储库下载实际文件。所以我做到了:

from pandas.tseries import holiday    # no error

holiday.<TAB>

...并且向我展示了我需要的所有东西-太好了!

但是这里发生了什么?

查看的实际代码holidays.py并没有给我任何暗示,为什么我使用上面的语句简单地导入熊猫时为什么不导入文件/模块。

编辑

这是一些其他信息,显示了如何holidaypandas.tseries自身内部找不到,但是可以显式导入和使用的信息:

>>> import pandas as pd
>>> pd.tseries.holiday.USFederalHolidayCalendar()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'pandas.tseries' has no attribute 'holiday'
>>> from pandas.tseries import holiday
>>> holiday.USFederalHolidayCalendar()
<pandas.tseries.holiday.USFederalHolidayCalendar object at 0x7f3b18dc7fd0>
n1k31t4

使用import pandas as pdsimple不会自动导入pandas库的所有子模块(如TomAugspurger在上面的评论中指出的那样)。

这是因为__init.py__pandas库的不会导入包括holiday子模块模块在内的所有内容

要么修改__init__.py文件来做到这一点,要么意识到必须显式导入pandas库的某些子模块!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档