python - 在 Flask 中路由 pandas 数据框
问题描述
我已经在全球范围内分配了一个熊猫数据框
df = pd.read_csv('file.csv')
我有一个带有提交路由的 Flask 应用程序,一旦用户从浏览器发出 POST 请求,就会触发该路由。
@app.route('/submit')
def sub():
// do some filtering in df
return redirect(url_for('recommend', uid=1))
我想sub()
将 df 传递给/recommend
.
@app.route('/recommend/<int uid>')
def rec(uid):
// make recommendations based on df
return df.to_html()
问题是,我如何通过它?我试过在 URL 查询中传递它
@app.route('/submit')
def sub():
// do some filtering in df
return redirect(url_for('recommend', uid=1, df=df))
@app.route('/recommend/<int uid>/<df>')
def rec(uid,df):
// make recommendations based on df
return df.to_html()
但这变成df
了一个字符串。我认为阻力最小的路径是让全局化,但是对内部的df
任何局部操作都不会在全局范围内被采纳。df
sub()
解决方案
在大多数情况下,将 df 分配为全局并不是一个有效的解决方案。您可以通过多种方式在烧瓶应用程序中跨不同方法/路由使用数据框:会话、酸洗、将 df 转换为 csv/json/dict 或通过函数返回等,具体取决于您的数据框和您的意图做它。这里有几个例子:
def filter-df():
df = pd.read_csv('file.csv')
// do some filtering in df
return df
@app.route('/submit')
def sub():
// or you can use session/pickling to cache/store your df after you do some filtering in df
return redirect(url_for('recommend', uid=1))
@app.route('/recommend/<int uid>')
def rec(uid):
df = filter-df()
// make recommendations based on df
return df.to_html()
推荐阅读
- python - all_world2pix 中的无收敛
- android - 如果键盘打开,TouchableOpacity 的 onPress() 函数首先不起作用
- node.js - 从分离的子进程获取输出
- python - QuantLib:从点构建 discount_curve
- flutter - 在 Event 上调用键盘并发送到 Stream
- linux - 未找到 Ubuntu 18.04.3 ieee80211.h
- css - 当使用带有 background-size=cover 的背景图像时,如何可靠地使用相对单位作为背景位置?
- php - 从锁定的文件 php 中获取数据
- azure-signalr - 在 Azure SignalR 服务中,什么是并发连接?
- google-analytics - How to construct google analytics query to avoid quota limits?