我注意到如果我輸入df.column_name()
,我可以使用IPython筆記本中的選項卡自動完成column_name
。IPython筆記本和熊貓自動完成
現在,對列做些什麼的正確語法是df['column_name']
,我無法自動完成(我假設是因爲它是一個字符串?)。是否有任何其他符號或方法來簡化輸入列名稱。我很想找一個解決方案,讓我在這個df['column_name']
內自動完成列名的自動填充。
我注意到如果我輸入df.column_name()
,我可以使用IPython筆記本中的選項卡自動完成column_name
。IPython筆記本和熊貓自動完成
現在,對列做些什麼的正確語法是df['column_name']
,我無法自動完成(我假設是因爲它是一個字符串?)。是否有任何其他符號或方法來簡化輸入列名稱。我很想找一個解決方案,讓我在這個df['column_name']
內自動完成列名的自動填充。
我發現以下方法對我有用。它基本上創建了一個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()
,你很好。
我不知道你的數據是如何坐落但是當我導入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]]
當你開始鍵入「名字」時,你將會碰到標籤,然後你所要做的就是指定你想要的名字。我不確定這是否更有效,那麼只需輸入單詞即可。
正如你已經注意到的,如果你使用'df.column_name'的屬性訪問,你會得到autocompletion,我不認爲有任何其他方式是真的會成爲可能。在將來,如果有人編寫專門爲'pandas'設計的IPython筆記本插件,它可能會成爲可能。 – Marius