请有人帮我解决这个问题,我试图找到从 Excel 提取到 python 环境中的 B2:B1500 值的平均值,但我被卡住了。这是我到目前为止编写的代码。
wb=xl.load_workbook("J:/Data/T0444CH1.xlsx")
type(wb)
ws = wb.active
tuple(ws['B2':'B1500'])
for rowOfCellObjects in ws['B2':'B1500']:
for cellObj in rowOfCellObjects:
def avg(cellObj):
return float(sum(cellObj))/len(cellObj)
average = sum(cellObj)/len(cellObj)
这是我遇到的错误
average = sum(cellObj)/len(cellObj)
TypeError: 'Cell' object is not iterable
最佳答案
在这种情况下,问题是 cellObj
不是一个列表或 Python 可以求和的东西,它是一个变量。另外,另一个问题是您从未调用过平均函数,该函数执行与最后一行完全相同的操作,并且也会导致相同的错误,因此您可以使用它或删除它
(我建议删除它)。
如果您仍想使用 sum
函数,则可以创建所有值的列表。在这种情况下,您可以这样做:
wb=xl.load_workbook("J:/Data/T0444CH1.xlsx")
type(wb)
ws = wb.active
tuple(ws['B2':'B1500'])
#Our List Of cells
cells = []
for rowOfCellObjects in ws['B2':'B1500']:
for cellObj in rowOfCellObjects:
cells.append(cellObj)
average = sum(cells)/len(cells)
如果您想通过仅使用变量来减少内存使用量,您可以这样做:
wb=xl.load_workbook("J:/Data/T0444CH1.xlsx")
type(wb)
ws = wb.active
tuple(ws['B2':'B1500'])
#Our Totals
counter = 0
total = 0.0
for rowOfCellObjects in ws['B2':'B1500']:
for cellObj in rowOfCellObjects:
total+=float(cellObj)
counter+=1
average = total/counter
注意:我尚未测试这些解决方案。
关于python - 在Python中确定Excel工作表的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48414370/