ZeroDivisionError错误求助:浮点数除以零问题排查及解决
问题分析
错误根源是代码中length/(length-1)的计算逻辑:当length(即符合establishment=e且locality=l的数据行数)等于1时,length-1为0,触发浮点数除零错误。
修复方案
通过增加前置判断避免除零场景,同时优化重复数据筛选的操作提升效率:
import math avg_cost = [] for e, l in lis: # 一次性筛选目标分组数据,避免重复计算 group_data = ZomatoData[(ZomatoData["establishment"] == e) & (ZomatoData["locality"] == l)] length = group_data.shape[0] # 处理分组数据量不足的情况,可根据业务需求调整默认值 if length <= 1: avg_cost.append(0) continue # 筛选有效成本数据并计算均值 valid_costs = group_data[group_data["average_cost_for_two"] != 0]["average_cost_for_two"] valid_mean = valid_costs.mean() # 处理分组内无有效成本数据的情况 if math.isnan(valid_mean): avg_cost.append(0) continue # 计算最终结果 final_val = math.ceil(valid_mean * length / (length - 1)) avg_cost.append(final_val)
关键优化点
- 前置判断
length是否≤1,直接跳过除零计算逻辑 - 仅执行一次基础分组筛选,重复复用结果减少计算开销
- 增加对有效成本均值为NaN的处理,避免后续计算异常
内容的提问来源于stack exchange,提问作者Priyanka Pamnani
相关产品推荐
相关产品推荐

