из pandas._libs
фактически импортировано 5 методов / классов / модулей:
- NaT,
- grouby как libgroupy (так что в вашем скрипте вы теперь будете использовать libgroupy)
- iNaT
- lib
- сокращение
Теперь NaT
и iNaT
действительно не существует в папке _libs
, но это не приведет к ошибке импорта, поскольку они импортированы откуда-то еще в __init__.py
из _libs.
__init__.py
пакета неявно выполняется всякий раз, когда что-либо импортируется из этого пакета или его подпакетов.
Таким образом, __init__.py
внутри _libs
будет выполняться, где NaT, iNaT etc.
импортируется из пакета .tslibs
, что делает их доступными для импорта.из пакета .libs
тоже.
Теперь, если вы будете искать NaT
или iNaT
в папке .tslibs, вы не найдете его, но если вы посмотрите на __init__.py
из .tslibs
Здесь вы увидите, что NaT
и iNaT
импортированы из .nattype
, поэтому, если вы загляните внутрь этого файла, то найдете там определения NaT
и iNaT
.
Youможете взглянуть на документы для лучшего объяснения
Вы можете импортировать его следующим образом, и тогда вам будет легче понять, что происходит:
from pandas._libs import NaT, iNaT, lib, reduction, groupby as libgroupby
Этот импорт будет делать то же самое, что и оператор импорта в вашем вопросе.