gpt4 book ai didi

python - 尝试将 pandas 数据框加载到 Flask session 中并在整个 session 中使用它

转载 作者:太空宇宙 更新时间:2023-11-03 11:44:11 26 4
gpt4 key购买 nike

我正在处理一个巨大的数据框。我想避免在用户查询之间进行酸洗。想知道我是否可以将 DataFrame 保存在 Flask Session 中并从 session 中访问它从而避免 pickling。

我写了下面的代码,但我遇到了错误:[17578 行 x 319 列] 不是 JSON 可序列化的

#=====================================================================================
#=====================================================================================
@app.route('/start', methods=['GET', 'POST'])
def index():
if 'catalogueDF' in session:
if request.method == 'POST':
query = request.get_json('query') # Read user query
df = session['catalogueDF']
result = str(list(set(df['brandname']))[2])

else:
query = request.args.get('query')
result = 'User query: '+str(query)

else:
df = pd.read_excel('errorfree.xlsx', sheetname='Sheet1').fillna('NA')
df = pd.DataFrame([df[col].astype(str, na=False).str.lower() for col in df]).transpose()
session['catalogueDF'] = df
result = 'no query posted yet'

response = app.response_class(
response=json.dumps(result),
status=200,
mimetype='application/json'
)
return response

# Flask start of app
if __name__ == '__main__':
app.secret_key = os.urandom(24) # Sessions need encryption
app.run(debug = True)

最佳答案

澄清一下,您似乎想将 DataFrame 存储到 Flask session 中。 session 对象需要序列化,即存储在 session['my_object_name'] 中的值需要是一个序列化对象。

我发现在将其保存到 session 对象之前将其转换为字典最简单:

dict_obj = df.to_dict('list')
session['data'] = dict_obj

要在另一个函数中检索 session 对象作为数据框,将字典转换回原始数据框:

dict_obj = session['data'] if 'data' in session else ""  
df = pd.DataFrame(dict_obj)

关于python - 尝试将 pandas 数据框加载到 Flask session 中并在整个 session 中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43302961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com