2015-02-09 153 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文件的第一列