2015-02-09 154 views
4

我有一個Excel表格,有2列。列1是名稱,列2是年齡。我想創建一個字典,其中名字是關鍵,年齡是價值。這裏是代碼,但它錯誤地創建了一個字典。python從excel創建詞典

keyValues = [x.value for x in worksheet.col(0)] 
data = dict((x, []) for x in keyValues) 
while curr_row < num_rows: 
     curr_row += 1 
     for row_index in range(1, worksheet.nrows): data[keyValues[row_index]].append(worksheet.cell_value(curr_row, 1)) 

我想有一個如下的詞典來自Excel表格的2列。

{'Ann': 12, 'Maria': 3, 'Robin': 4, 'NameN':N} 

回答

0

如果列不包含除姓名和年齡等任何數據,你對數據質量非常有信心,(沒有非數字數據,其中年齡應該是,等),那麼你可以去它是這樣的:

names = (name.value for name in worksheet.col(0)) 
ages = (int(age.value) for age in worksheet.col(1)) 
data = dict(zip(names, ages)) 

如果你想保證命令,你可以使用一個collections.OrderedDict對象data代替香草字典。

如果您需要處理壞數據(即有人輸入的字符串,而不是在紙的整數歲),你可能要拿出namesages發電機對象的定製實現(以上這樣的假設一帆風順)。

6

這就是與大熊貓很簡單:現在

import pandas as pd 
my_dic = pd.read_excel('names.xlsx', index_col=0).to_dict() 

my_dic是:

{ '羅賓':4 '瑪麗亞':3, '安':12}

index_col=0如果'name'位於excel文件的第一列