烧瓶中的列表到表格格式问题

我正在使用FLASK API渲染/显示网页的预测列表。该列表包含三个元素:ReqNum,预测和预测的概率。我能够连续显示每条记录。但是,对于上述每个元素,我无法将行分为三列。我将数据框转换为列表,然后将其传递到网页。下面是代码:


from flask import Flask, abort, request,render_template, json, render_template_string

from DataPreparationv4 import Data_Preprocess

import numpy as np

import pandas as pd

import pickle



pd.options.mode.chained_assignment = None


filename = 'Test2.pkl'

loaded_model = pickle.load(open(filename, 'rb'))


app = Flask(__name__)


@app.route("/", methods=['GET'])

def Predictions():

    Base_Data = pd.read_csv('Test.csv')

    DataSet1 = Data_Preprocess(Base_Data)


    CaseNumber = DataSet1[1]

    DataSet1 = DataSet1[0]

    result = loaded_model.predict(DataSet1)


    prob = loaded_model.predict_proba(DataSet1)


    Predictions = pd.DataFrame({'CTA Code':result,'Prob1':prob[:,0],'Prob2':prob[:,1]})

    Predictions['Probability'] = np.where(Predictions['Prob1'] > Predictions['Prob2'], 

               Predictions['Prob1'], Predictions['Prob2'])


    Predictions['CaseNumber'] = CaseNumber['Case Number']


    CTA_Map = [['Y',1],['N',0]]

    CTA_Map = pd.DataFrame(CTA_Map,columns=['CTA Met','CTA Code'],dtype=float)


    Predictions = pd.merge(Predictions,CTA_Map[['CTA Code','CTA Met']],on='CTA Code', how='left')

    Predictions =  Predictions.drop(['CTA Code','Prob1','Prob2'], axis=1)

    Predictions = Predictions[['CaseNumber', 'CTA Met', 'Probability']]

    df_list = Predictions.values.tolist()


    return render_template('hello13.html', my_list=df_list)

if __name__ == '__main__':

    app.run(host='0.0.0.0',port=5000,debug = True)

以下是HTML模板的代码:


<html>

<body>

     <table>

         <tbody>

         {# here we iterate over every item in our list#}

         {% for item in my_list %}

             <tr><td>{{ item }}</td></tr>

         {% endfor %}

         </tbody>

     </table>

 </body>

 </html>

在浏览器上查看输出:

http://img1.mukewang.com/6087729c0001c93a03190465.jpg

  • 我应该怎么做才能为表格行中的每个元素获取三列。

由于我使用数据框进行列表处理会导致列名或列标题丢失。因此,

  • 有没有一种方法可以显示数据框,这样我就不会丢失列名/标题。

  • 或者如何使用当前数据框列出技术将列标题传递给HTML表格列标题。

请指导我如何解决此问题。我仍然是Python的新手,因此我对概念的了解一直在发展。

因此,请您也指导我有关这些概念。


慕桂英546537
浏览 143回答 1
1回答

慕田峪9158850

如果您可以控制每一行正好包含3个成员,那么一个简单的选择就是直接在for循环中解压缩这3个项目:{% for num, prediction, prob in my_list %}&nbsp; &nbsp; <tr>&nbsp; &nbsp; &nbsp; &nbsp; <td>{{ num }}</td>&nbsp; &nbsp; &nbsp; &nbsp; <td>{{ prediction }}</td>&nbsp; &nbsp; &nbsp; &nbsp; <td>{{ prob }}</td>&nbsp; &nbsp; </tr>{% endfor %}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python