python从excel创建字典
我有一张excel表格,有两列。第1列是姓名,第2列是年龄。我想创建一个字典,其中name是key,age是value。下面是代码,但它创建的字典不正确python从excel创建字典,python,python-3.x,xlrd,Python,Python 3.x,Xlrd,我有一张excel表格,有两列。第1列是姓名,第2列是年龄。我想创建一个字典,其中name是key,age是value。下面是代码,但它创建的字典不正确 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,
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))
如果您的列不包含名称和年龄以外的任何数据,并且您对数据质量非常有信心(年龄应该在哪里没有非数字数据,等等),那么您可以这样做:
names = (name.value for name in worksheet.col(0))
ages = (int(age.value) for age in worksheet.col(1))
data = dict(zip(names, ages))
如果您想保证订单,可以使用集合.OrderedDict
对象作为数据
而不是普通字典
如果您需要处理错误数据(即,有人在工作表中输入了字符串而不是整数年龄),您可能必须提出
名称
和年龄
生成器对象的自定义实现(上述对象假定顺利进行)。熊猫非常简单:
import pandas as pd
my_dic = pd.read_excel('names.xlsx', index_col=0).to_dict()
我的dic现在是:
{'Robin':4,'Maria':3,'Ann':12}
index\u col=0
如果“name”在excel文件的第一列中
import pandas as pd
my_dic = pd.read_excel('names.xlsx', index_col=0).to_dict()