从一个pandas dataframe.loc请求设置多个变量

rjee0c15  于 2023-09-29  发布在  其他
关注(0)|答案(1)|浏览(99)

我正在为年底的笔记本电脑退货写一个网络应用程序,让我们的生活更轻松。我有一个.csv文件,其中包含设备序列号和相关用户的姓名、用户代码等。我使用 flask 作为框架工作,一切都很顺利。我可以使用pandas来创建dataframe并查找我需要的所有信息,但是,它要么只使用一个用户的详细信息创建一个新的dataframe,这意味着我必须再次从中提取信息,或者我通过在整个表上运行dataframe.loc查询5次来设置我需要的每个变量,这对我来说似乎非常低效。
我想做的是运行一次.loc查询,并将多个变量设置为返回行的相应单元格的值。我已经找遍了,但我找不到这样做的方法,但也许我的google-fu没有我想象的那么好。
我知道这可能是我应该在以后的步骤中调整效率时改变的事情,现在只专注于让它工作,但当5个查询可以用1个处理时,这似乎是一个大洞。
这是我当前的代码(它只获取名字和姓氏,但我将不得不在以后获得更多信息)。

`@app.route('/lookup', methods=['GET','POST'])
def lookup():
    st = request.form['serviceTag'] if 'serviceTag' in request.form else None
    fName = df.loc[st]['fName']
    sName = df.loc[st]['sName']
    return {
        'fname': fName,
        'sname': sName
    }`

干杯!干杯!

vngu2lb8

vngu2lb81#

您可以简单地向loc提供列列表,然后在结果上使用to_dict

def lookup():
    cols = ['fname', 'sname']    # add more as desired
    st = request.form['serviceTag'] if 'serviceTag' in request.form else None
    return df.loc[st, cols].to_dict()

请注意,如果stNone,这将引发KeyError,在这种情况下,您可能希望返回None。例如

def lookup():
    cols = ['fname', 'sname']    # add more as desired
    if not 'serviceTag' in request.form:
        return None
    st = request.form['serviceTag']
    return df.loc[st, cols].to_dict()

相关问题