我注意到,如果要键入df.column_name(),则可以使用IPython Notebook中的选项卡自动完成column_name

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

最佳答案

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

例如,考虑以下包含两个名为“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)})

以下代码创建一个名为“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()

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

我定义执行此操作的功能的原因是,通常您会向数据框添加新变量。为了将新变量更新为namedtuple“var”,只需再次调用该函数ntuples(),就可以了。

10-08 09:25
查看更多