2014-01-31 76 views
3

我注意到如果我輸入df.column_name(),我可以使用IPython筆記本中的選項卡自動完成column_nameIPython筆記本和熊貓自動完成

現在,對列做些什麼的正確語法是df['column_name'],我無法自動完成(我假設是因爲它是一個字符串?)。是否有任何其他符號或方法來簡化輸入列名稱。我很想找一個解決方案,讓我在這個df['column_name']內自動完成列名的自動填充。

+1

正如你已經注意到的,如果你使用'df.column_name'的屬性訪問,你會得到autocompletion,我不認爲有任何其他方式是真的會成爲可能。在將來,如果有人編寫專門爲'pandas'設計的IPython筆記本插件,它可能會成爲可能。 – Marius

回答

3

我發現以下方法對我有用。它基本上創建了一個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」 namedtuple:

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(),你很好。

1

我不知道你的數據是如何坐落但是當我導入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]] 

當你開始鍵入「名字」時,你將會碰到標籤,然後你所要做的就是指定你想要的名字。我不確定這是否更有效,那麼只需輸入單詞即可。