Flask结合Pandas计算指定两列均值报500错误解决方法
问题根源
从全量计算均值的返回结果可以确认,Height(Inches)、Weight(Pounds)两个列本身存在且为可计算的数值类型,筛选列触发500错误的核心原因有两个:
- 读取CSV时没有指定文件自带的行号列为索引,pandas把这列识别成了名为
Index的普通数据列,部分pandas版本在多列筛选后计算统计值、再做字符串转换时会触发序列化异常 - 你贴出的代码中函数内部的逻辑行没有做缩进,Python是缩进敏感语言,语法错误也会直接导致服务返回500
可直接运行的解决方法
任选一种即可:
- 方法一:读取CSV时指定第一列为索引,过滤掉冗余的行号列,再做筛选计算
@app.route('/csv') def get_average_parameters(): # index_col=0 表示将文件第一列作为DataFrame索引,不作为数据列加载 dataset = pd.read_csv('hw.csv', index_col=0) average = dataset[['Height(Inches)', 'Weight(Pounds)']].mean() return str(average)
- 方法二:不修改CSV读取逻辑,全量计算完均值后直接提取目标两列的结果,跳过列筛选步骤
@app.route('/csv') def get_average_parameters(): dataset = pd.read_csv('hw.csv') all_avg = dataset.mean() target_avg = { "Height(Inches)": all_avg["Height(Inches)"], "Weight(Pounds)": all_avg["Weight(Pounds)"] } return str(target_avg)
提示:写完代码注意检查函数内代码的缩进,统一保持4个空格的缩进量,避免低级语法错误。
内容的提问来源于stack exchange,提问作者Nicolas
相关产品推荐
相关产品推荐

