You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask应用中如何通过单次pandas df.loc查询批量赋值多变量?

解决方法

你可以通过一次.loc查询获取整行数据,再从该行中提取所需字段的值,这样就能避免多次查询DataFrame,提升效率。

修改后的代码如下:

@app.route('/lookup', methods=['GET','POST'])
def lookup():
    st = request.form.get('serviceTag')  # 用get更简洁,不存在时返回None
    if not st:
        return {'error': 'serviceTag参数缺失'}, 400
    
    try:
        # 仅执行一次.loc查询,获取整行数据
        user_row = df.loc[st]
        # 从行数据中提取各字段值
        fName = user_row['fName']
        sName = user_row['sName']
        # 如果后续需要更多字段,直接从user_row中提取即可
        # user_code = user_row['userCode']
        
        return {
            'fname': fName,
            'sname': sName
            # 可添加更多返回字段
        }
    except KeyError:
        return {'error': '未找到该设备序列号对应的信息'}, 404

关键优化点

  • 只调用一次df.loc[st]获取整行数据,后续所有字段取值都基于这行数据,避免重复查询
  • 使用request.form.get()替代原判断逻辑,代码更简洁
  • 增加了异常处理,避免因无效序列号导致的服务器报错

如果需要一次性把多个字段赋值给变量,还可以用解构的方式(需保证字段顺序和变量顺序完全对应):

fName, sName = user_row[['fName', 'sName']]

内容的提问来源于stack exchange,提问作者Scobbo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 21:03:17