【问题标题】:Filter pandas Dataframe on Javascript Website在 Javascript 网站上过滤熊猫数据框
【发布时间】:2019-02-07 20:20:09
【问题描述】:

我“继承”了一个更大的软件项目,在后端使用 python/flask,在前端使用 HTML/Javascript。我现在想在其中一个网站上实现一些交互性。 我成功地将数据框传递到网页并可以显示其内容。我有一些过滤器作为按钮,可以在各种视图之间切换。我可以在网页本身中访问这些过滤器值。我现在如何将这些新值传递给数据框以过滤它而不必重新渲染整个页面? 请注意,我使用 template.render() 而不是 render_templates() 因为该项目没有模板文件夹,并且需要进行太多重组才能更改此内容。 这是相关的python部分:

@app.route('/tagging/OverviewPerDoc.html')
def analysis():
    x = <function which returns a pandas dataframe>()
    tempid = globalxmlid
    datatuple = [x, tempid]
    filetoopen = os.path.join(os.getcwd(), config.filepaths.overviewperdoc)

    with open(filetoopen) as fi:
        template = Template(fi.read())
    return template.render(data = datatuple)

这是网站部分:

<body>
(...)
<button id="magicbutton" class="btn btn-primary my-group-button" type="submit" style="margin-right:5px;" value = "Show">Show</button>
    (...)
    {% block content %}
         (...)
        </div> <br> <br> <br>
         <h1 align="center">{{data[0][data[0]['identifier'] == data[1]]['Name'].iloc[0]}}</h1>
		 (...)
		 <div class="container">
                        <table>
                      <tr>
                        <th></th>
		(...)
		                      <tr>
                        <td>Value</td>
                        <td>{{data[0][data[0]['identifier'] == data[1]]['Value'].iloc[0]}} {{data[0][data[0]['identifier'] == data[1]]['currency'].iloc[0]}}</td>
                        <td>100%</td>
                      </tr>
					  (...)

当单击我的测试按钮时,我可以将其值打印到控制台。

<script>
    function magicfunction()
    {
        var test = savethecurrentxml;
        console.log(test);
	}
</script>

正如我所说,所有这些都有效,我现在只想将其更改为:

data[0][data[0]['identifier'] == test]['Name'].iloc[0]

我怎样才能做到这一点?

【问题讨论】:

    标签: javascript python html pandas flask


    【解决方案1】:

    您可以配置一个单独的 API 端点,该端点仅返回过滤后的数据帧,并让 Javascript 查询该端点并使用响应来修改您的页面。

    【讨论】:

    • 好的,但这意味着重新渲染整个页面,结果只有在我重新加载时才会显示?我需要像'return jsonify(mydataframe)'这样的东西,然后在我的网站上立即渲染而不重新加载它......
    • 哦等等....我想我明白你的建议了。虽然我需要弄清楚如何做到这一点。但是谢谢,它仍然帮助我“找到正确的轨道”
    猜你喜欢
    • 2019-04-13
    • 2015-05-28
    • 2018-02-06
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 2014-12-02
    相关资源
    最近更新 更多