代码之家  ›  专栏  ›  技术社区  ›  rawwar

如何直接从pandas包导入dataframe类

  •  3
  • rawwar  · 技术社区  · 7 年前

    在熊猫中,我们可以直接执行以下操作

    import pandas as pd
    
    df = pd.DataFrame()
    

    在这里,熊猫是一个包裹。dataframe是一个类。那么,这是如何工作的,因为dataframe实际上是在 pandas.core.frame (它在frame.py中定义,frame.py位于pandas的核心文件夹中。)

    注意:我认为这种行为可以通过在 __init__.py 文件。有人能帮我理解吗?

    2 回复  |  直到 7 年前
        1
  •  2
  •   dylan_fan    7 年前

    Dataframe 正如你所说的 pandas/core/frame.py .

    让我们看看 pandas/__init__.py 熊猫 directory 在吉瑟布上。

    第42行:

    from pandas.core.api import *
    

    pandas/core/api.py 进口 数据文件 熊猫/核心/框架.py 第23行:

    from pandas.core.frame import DataFrame
    

    所以自从你 import * pandas/core/api.py 在里面 pandas/__init__.py 熊猫/core/api.py 进口 数据文件 那么你已经 数据文件 直接进口到熊猫。

        2
  •  4
  •   bruno desthuilliers    7 年前

    __init__.py 从技术上讲只是另一个python模块,因此包中定义的任何名称 π介子 可以从包本身直接访问。在python中,使用包的 π介子 作为 a facade for submodules / subpackages .

    fwiw注意到熊猫 π介子 ,而使用 π介子 作为一个门面,它没有遵循好的实践,因为它使用了“星型导入”( from submodule import * )这使得追踪一个名称(定义它的模块)的来源非常痛苦,特别是使用panda这样一个大的包- 也是非常脆弱的,因为如果两个子模块输出一个相同的名称,最后一个导入的将是第一个。好的做法是始终明确指定要导入的名称:

    from submodule1 import foo, bar
    from submodule2 import baaz, quux
    

    这可以清楚地知道一个名字来自哪里,并且会使重复的名字变得更加明显:

    from submodule1 import foo, bar
    from submodule2 import baaz, quux
    from submodule3 import foo # oops, we will have to rename either this one or submodule1.foo
    
    推荐文章