0

在我过去的问题中,我说过我是 python 新手。我只在工作中使用过一次。再说一次,我必须为工作做一个小项目。

我必须阅读一个 excel 文件,在那个 excel 文件中,有 3 列(col1、col2、col3)。大约有 100 行。

col1 有 2 个值 A 和 B。col2 的值范围仅为 1 - 10。 col3 有很多不同的值。

但我希望我的 python 程序查看 col1 中的每个不同值,然后查看 col2 中的每个不同值,然后计算 col3 的所有相应值的平均值。

希望输出看起来像这样:

A - 1 = 2.3
A - 2 = 6.2
A - 3 = 5.7
etc. etc.
B - 1 = 3.5
B - 2 = 4.1
B - 3 = 8.1
etc. etc.

我知道,有很多问题要问,但到目前为止我已经做到了:

import xlrd #import package

#opening workbook and reading first sheet
book = xlrd.open_workbook('trend.xls')
sheet = book.sheet_by_index(0)

#print sheet name, number of rows and columns
#print sheet.name #print sheet name
#print sheet.nrows #print number of rows
#print sheet.ncols #print number of colums

#print cellname along with value in for loop
for row_index in range(sheet.nrows):
    for col_index in range(sheet.ncols):
        print xlrd.cellname(row_index,col_index),'-',
        print sheet.cell(row_index,col_index).value

它开始打印每个单元格中的所有值,以及名称等。但后来我意识到它并没有做它应该做的事情。而且我找不到有关如何执行此操作的适当教程。

如果你们有任何建议,我将不胜感激。非常感谢!

4

1 回答 1

2

试试这个:

import xlrd

book = xlrd.open_workbook('trend.xls')
sheet = book.sheet_by_index(0)

unique_combinations = {}

for row_index in range(sheet.nrows):
    cell_1 = sheet.cell(row_index, 0)
    cell_2 = sheet.cell(row_index, 1)
    cell_3 = sheet.cell(row_index, 2)
    unique_combo = (cell_1.value, int(cell_2.value))
    if unique_combinations.has_key(unique_combo):
        unique_combinations[unique_combo].append(cell_3.value)
    else:
        unique_combinations[unique_combo] = [cell_3.value]

for k in unique_combinations.keys():
    values = unique_combinations[k]
    average = sum(values ) / len(values )
    print '%s - %s = %s' % (k[0], k[1], average)
于 2013-03-12T16:09:19.920 回答