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
相关产品推荐
相关产品推荐

