IPython Notebook和Pandas自动完成

met*_*rsk 5 python autocomplete pandas ipython-notebook

我注意到如果要输入df.column_name(),我可以column_name在IPython Notebook中的选项卡中自动完成。

现在,对列执行操作的正确语法是df['column_name'],在该处我无法自动完成(我假设是因为它是字符串?)。还有其他符号或方法可以简单地键入列名。我是essentailly,正在寻找一种解决方案,该解决方案可以让我在其中自动完成列名的制表符df['column_name']

Mat*_*rin 4

我发现以下方法对我很有用。它基本上创建一个namedtuple包含数据框中所有变量名称的字符串。

例如,考虑以下数据框,其中包含 2 个名为“variable_1”和“variable_2”的变量:

from collections import namedtuple
from pandas import DataFrame
import numpy as np

df = DataFrame({'variable_1':np.arange(5),'variable_2':np.arange(5)})
Run Code Online (Sandbox Code Playgroud)

以下代码创建一个名为“var”的命名元组:

def ntuples():
    list_of_names = df.columns.values
    list_of_names_dict = {x:x for x in list_of_names}

    Varnames = namedtuple('Varnames', list_of_names) 
    return Varnames(**list_of_names_dict)

var = ntuples()
Run Code Online (Sandbox Code Playgroud)

在笔记本中,当我编写var.并按 Tab 时,df将显示数据框中所有变量的名称。写入var.variable_1相当于写入“variable_1”。因此,以下内容将起作用:df[var.variable_1].

我定义一个函数来执行此操作的原因是,您经常会向数据框中添加新变量。为了将新变量更新为您的命名元组“var”,只需再次调用该函数即可,ntuples()然后就可以了。