我注意到,如果要键入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()
,就可以了。