如果某些数据匹配,则计算一行的平均值,然后将结果写入另一个表单单元格

时间:2016-10-21 22:30:35

标签: python python-2.7 openpyxl

我有一张包含2张的excel文件。 在第一张纸上,我有100列x 23行。第一列包含名称,其他99列包含数字。 在第二张表中,我的第一列有名字。 如果名称匹配,我想在第二张表格中添加第一张表格中99列的平均值。 这就是我到现在为止所尝试的:

wb = openpyxl.load_workbook(".xlsx")
ws1 = wb.get_sheet_by_name('sheet1')
ws2 = wb.get_sheet_by_name('sheet2')

for counter1 in range(39,62):   #counter to parse second sheet
    for counter2 in range(36, 62):#counter to parse first sheet
        if ws1.cell(row=counter1, column=1).value == ws2.cell(row=counter2, column=1).value:   # check if column1 from first sheet matches column 1 from second sheet
            ws1.cell(row=counter1,column=19).value = ...

我不知道如何计算99列的平均值来添加它。 我尝试过mean(ws2.cell(row = counter2,column = 2).value), 但我得到了这个错误: TypeError:无法转换类型" unicode"分子/去噪剂

欢迎任何帮助

1 个答案:

答案 0 :(得分:0)

wb = openpyxl.load_workbook(".xlsx")
ws1 = wb.get_sheet_by_name('sheet1')
ws2 = wb.get_sheet_by_name('sheet2')

for counter1 in range(39,62):   #counter to parse second sheet
    for counter2 in range(36, 62):#counter to parse first sheet
        if ws1.cell(row=counter1, column=1).value == ws2.cell(row=counter2, column=1).value:   # check if column1 from first sheet matches column 1 from second sheet
            summ = 0.0
            for col in range(2,101):
                summ += float(ws1.cell(row = counter2, column = col).value)
            average = summ/99
            ws1.cell(row=counter1,column=19).value = average

所以我会通过总结列值并将总和除以列数来自己计算均值。

你确定,counter1指的是SECOND表和第二张表的counter2吗?命名表明可能存在逻辑错误。另外,为什么第二个范围从36到62而不像第一个范围那样从39到62?