IPython Notebook 和 Pandas 自动完成
Posted
技术标签:
【中文标题】IPython Notebook 和 Pandas 自动完成【英文标题】:IPython Notebook and Pandas autocomplete 【发布时间】:2014-02-23 13:58:52 【问题描述】:我注意到,如果我输入 df.column_name()
,我可以使用 IPython 笔记本中的选项卡自动完成 column_name
。
现在,对列做某事的正确语法是df['column_name']
,我无法自动完成(我假设是因为它是一个字符串?)。是否有任何其他符号或方法可以简化输入列名。我正在寻找一种解决方案,允许我在此df['column_name']
中自动完成列名。
【问题讨论】:
如您所见,如果您使用df.column_name
的属性访问权限,您将获得自动完成功能,我认为任何其他方式都不可能真正实现。将来,如果有人编写一个专门为pandas
设计的 IPython 笔记本插件,可能是可能的。
【参考方案1】:
我发现以下方法对我有用。它基本上创建了一个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))
以下代码创建一个名为“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]
.
我定义一个函数来执行此操作的原因是,您经常会向数据框添加新变量。为了将新变量更新为您的命名元组“var”,只需再次调用函数ntuples()
,您就可以开始了。
【讨论】:
【参考方案2】:我不确定您的数据是如何放置的,但是当我导入 csv/txt 文件时,我会在列表中指定列的名称,例如...
names = ['col_1', 'col_2', 'col_3']
等等... 然后像这样导入我的文件...
import pandas as pd
data = pd.read_csv('./some_file.txt', header = True, delimiter = '\t', names = names)
然后你可以像...一样完成标签完成
new_thing = data[names[1]]
当您开始键入“名称”时,您将在其中点击选项卡,然后您所要做的就是指定您想要的“名称”项目。我不确定这是否比简单地输入单词更有效。
【讨论】:
以上是关于IPython Notebook 和 Pandas 自动完成的主要内容,如果未能解决你的问题,请参考以下文章
Pandas / IPython Notebook:在数据框中包含和显示图像
在 IPython Notebook 中显示所有 pandas 数据框
ipython notebook pandas max 允许的列数
InstagramAPI - 如何将 JSON Python 数据解析为 Pandas DataFrame(iPython、Jupyter Notebook)