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)

在IPython Notebook中愉快地使用python编程

IPython Notebook 中的“斑马表”?