Python3 menemukan nilai dari lembar excel

Saya memiliki file Excel dengan satu lembar kerja

Contoh:

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

Bagaimana cara mencari suhu minimum di Australia di kolom B, suhu rata-rata di Inggris Raya di kolom C dan mencatat hasilnya di kamus? Ini sepertinya tugas yang cukup sederhana, tetapi saya tidak dapat memahami dan menemukan contohnya. Bantuan apa pun akan sangat dihargai.


person tim_frost    schedule 27.08.2017    source sumber
comment
Coba openpyxl.readthedocs.io/en/default   -  person Alex Hall    schedule 27.08.2017


Jawaban (1)


Saya lebih suka menggunakan xlrd untuk membaca excel. Paket lain juga cocok. Tergantung.

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]

Kemudian Anda bisa mendapatkan hasil seperti data_dict['Australia']['minimum temperatur']['B'] = 3

Bisakah Anda memberi saya format yang lebih jelas? "suhu minimum 3 1" yang mana yang minimum?

Dan saya akan melengkapi kodenya...

person Yutao ZHU    schedule 27.08.2017
comment
untuk Australia minimal 3, untuk Inggris Raya 2 - person tim_frost; 27.08.2017
comment
apa arti kolom C untuk suhu minimum. seperti 1 untuk apa? Jadi elemen yang ingin Anda dapatkan adalah dict['Australia']['minimum temperatur']['B'] = 3? - person Yutao ZHU; 27.08.2017
comment
Ini misalnya. Saya ingin mendapatkan hasil seperti dijelaskan di atas - person tim_frost; 31.08.2017