Python3 находит значение из листа excel

У меня есть файл Excel с одним листом

Пример:

A                   B  C

Australia

minimum temperature 3  1

average temperature 6  5

Great Britain

minimum temperature 2  7

average temperature 9  2


result:

Australia - 3; Great Britain - 2

Как найти минимальную температуру в Австралии в столбце B, среднюю температуру в Великобритании в столбце C и записать результат в словарь? Это кажется довольно простой задачей, но я не могу понять и найти примеры. Любая помощь будет оценена.


person tim_frost    schedule 27.08.2017    source источник
comment
Попробуйте openpyxl.readthedocs.io/en/default   -  person Alex Hall    schedule 27.08.2017


Ответы (1)


Я предпочитаю использовать xlrd для чтения Excel. Другой пакет также подходит. Это зависит.

import xlrd
data = xlrd.open_workbook('your excel file path')
table = data.sheets()[0] # assume that your data is in the 1st sheet
nrows = table.nrows # get the rows in the table
data_dict = {}
for i in range(nrows):
    if i == 0:
        countinue # ignore the first row 'A B C'
    row = table.row_values(i) # get the data in the ith row
    if (i - 1) % 3 == 0:
        data_dict[row[0]] = {} # a dict whose key is column A's value
        country_name = row[0]
    else:
        data_dict[country_name][row[0]] = {}
        data_dict[country_name][row[0]]['B'] = row[1]
        data_dict[country_name][row[0]]['C'] = row[2]

Затем вы можете получить результат, например data_dict['Австралия']['минимальная температура']['B'] = 3

Не могли бы вы дать мне более четкий формат? "минимальная температура 3 1" какая из них минимальная?

И я дополню код...

person Yutao ZHU    schedule 27.08.2017
comment
для Австралии минимум 3, для Великобритании 2 - person tim_frost; 27.08.2017
comment
что означает столбец C для минимальной температуры. как 1 для чего? Итак, элемент, который вы хотите получить, это dict['Австралия']['минимальная температура']['B'] = 3? - person Yutao ZHU; 27.08.2017
comment
Это например. Я хочу получить результат, как описано выше - person tim_frost; 31.08.2017