2016-06-07 69 views
0

我似乎無法找到如何在Python 2.7中填寫變量名稱而不是索引。我只能找到其他編程語言的答案。Python 2.7。能夠填寫變量名稱而不是索引號

導入的文件包含多列,但我只想添加在Query函數中定義和要求的列到Data_BM。那麼如何將IlocX視爲一個指數。

即使有更簡單的方法,我只想知道如何將變量放在索引位置上。先謝謝你。

# function for the datafile name 
def datafilename(): 
    print "Type the data filename, for example: myfile.csv : \n" 
    dataname = raw_input() 
    print dataname, 'Correct? [Y/N]' 
    yn = raw_input() 
    if yn == 'Y' or yn == 'y': 
     return dataname 
    else: 
     datafilename() 

# function for the column numbers 
def query(var): 
    print 'Type column number for',var,':' 
    loc = raw_input() 
    try: 
     loc = int(loc) 
    except: 
     loc = loc 
    print loc, 'Correct? [Y/N]' 
    yn = raw_input() 
    if yn == 'Y' or yn == 'y': 
     if type(loc) == int: 
      return loc 
     elif loc == 'NA' or loc == 'na': 
      return loc 
     else: 
      print 'Please type column as integer value' 
      query(var) 
    else: 
     query(var) 

#Ask for column locations 
loc1 = query("X") 
loc2 = query("Y") 
loc3 = query("Z") 
loc4 = query("A") 
loc5 = query("B") 
Iloc1 = int(loc1-1) 
Iloc2 = int(loc2-1) 
Iloc3 = int(loc3-1) 
Iloc4 = int(loc4-1) 
Iloc5 = int(loc5-1) 

# Asking for data file name 
dataname = datafilename() 

#Get data 
Data_BM = pd.read_csv(dataname) 
Data_BM = Data_BM[Iloc1,Iloc2,Iloc3,Iloc4,Iloc5] 

我更新了我的文件,我忘了放在查詢函數中。要求用戶填寫例如X的列號。用戶鍵入1,即loc1。 Iloc 1 = 0.所以0是索引號。我怎樣才能讓Iloc1成爲Data_BM = Data_BM [Iloc1,Iloc2,Iloc3,Iloc4,Iloc5]中的索引號,其他賬號的索引號相同。我想要這個的原因是因爲列可能會改變,但我想讓用戶容易。

+1

你是什麼意思「填寫變量名稱而不是索引」?你能提供一個更通用的例子嗎? –

+0

現在我寫了: Data_BM = Data_BM [Iloc1,Iloc2,Iloc3,Iloc4,Iloc5] 因爲Iloc1,Iloc2 ....等在我的情況下是1,2,3,8,9。這將是用戶輸入。但是我想把它作爲索引號,正如我在Data_BM中所做的那樣,但顯然我做錯了,因爲它不能像這樣工作:Data_BM = Data_BM [Iloc1,Iloc2,Iloc3,Iloc4,Iloc5]。 但我怎麼能讓它接受Iloc1,Iloc2 ...等索引 – AlmostGr

+0

我認爲他正在考慮PHP中的'$$ i'這樣的東西。我不認爲這是可能的蟒蛇,不應該。 – Paul

回答

0

簡短回答是否,

長答案是爲什麼? 如果你有一個像a1, a2, a3, a4, ..., an這樣的變量列表,如果你想通過字符串來訪問它,可以列出它們或者字典。

你可以做的最接近的事是:

vars = {} 
for i in range(10): 
    vars["Ilock"+str(i)] = something() 

vars["Ilock4"] = 42 

但它的醜陋和不方便。

相關問題