根据用户输入从连接的 JSON 字符串中渲染多个 Pandas 的数据帧
Posted
技术标签:
【中文标题】根据用户输入从连接的 JSON 字符串中渲染多个 Pandas 的数据帧【英文标题】:Rendering multiple Pandas' dataframes from concatenated JSON strings based upon user inpu 【发布时间】:2016-04-13 19:10:41 【问题描述】:我正在尝试在基于由用户指定的值过滤的 pandas 数据框的 Jinja 模板构建的 Flask webapp 中显示图表。
在此特定页面的文件中,我有以下内容:
<form>
<div id="radio">
<input type="radio" id="radio1" name="Values"checked="checked" value="Value1"><label for="radio1">Value1</label>
<input type="radio" id="radio2" name="Values" value="Value2"><label for="radio2">Value2</label>
<input type="radio" id="radio3" name="Values"value="Value3"><label for="radio3">Value3</label>
<a href='#' id="branch_input"><button type="button">Submit</button> </a>
</div>
</form>
对于用户将从中选择的单选按钮。 在我的基本模板中,我有以下内容,这是我认为我需要获得的价值:
<script type="text/javascript">
$(function)
$('a#valueinput_input').bind('click',function()
$.getJSON('/_filterandreturndataframes',
Values: $('input[name="Values"]:checked').val(),
, function(data)
<!--"confused"-->
</script>
然后我会将其传递给 Python 之类的东西
@app.route('_filterandreturndataframes')
def
filtervalue = request.args.get('Values')
#filtering and compiling dataframes here
data = dataframe1.to_json() OR .to_html()?
data2 = dataframe2.to_json() OR .to_html()?
return data, data2
如果我理解正确的话,Python 可以从一个函数返回多个值。 JavaScript,如果我理解正确的话,只能返回一个。我希望用户单击一个按钮并在网页中输出两个图形。我已经想出了如何使用 .to_json() 从每个数据帧中获取 JSON 字符串,但不知道如何将它们组合成一个 JSON 字符串数组(或者即使这是解决此问题的正确方法),然后解析该数组进入相关字符串以输出到附加到特定段落 id 的表中。感谢您的建议!
【问题讨论】:
【参考方案1】:使用to_json()
,您最终会得到两种字符串类型。您可以创建自己的 JSON 字符串吗?
'[' + ','.join([data, data2]) + ']'
另一种笨拙的方法是只使用 python list
s 和 dict
s 作为中间数据结构,然后使用 json 模块将其序列化为 json,因为 python list
s 和 dict
s 与json 模块。
import json
l1 = dataframe1.to_dict(orient='records')
l2 = dataframe2.to_dict(orient='records')
D = 'data1' : l1, 'data2' : l2
jsonstr = json.dumps(D)
如果您不喜欢混合两个数据集,您也可以将两个数据帧连接起来,然后将一个巨大的数据帧作为 json 输出。
【讨论】:
谢谢!接下来的问题是:一旦数据框组合在网页中,我如何再次拆分它们,然后将它们传递给特定的 ID?还是神社变量?作为表格?以上是关于根据用户输入从连接的 JSON 字符串中渲染多个 Pandas 的数据帧的主要内容,如果未能解决你的问题,请参考以下文章