Подтвердить что ты не робот

Pandas Отображение Dataframe на веб-странице

Я использую Flask, но это, вероятно, относится ко многим аналогичным структурам.

Я создаю pandas Dataframe, например.

@app.route('/analysis/<filename>')
def analysis(filename):
    x = pd.DataFrame(np.random.randn(20, 5))
    return render_template("analysis.html", name=filename, data=x)

Образец template.html выглядит как

{% extends "base.html" %}
{% block content %}
<h1>{{name}}</h1>
{{data}}
{% endblock %}

Это работает, но вывод выглядит ужасно. Он не использует разрывы строк и т.д. Я играл с data.to_html() и data.to_string() Какой самый простой способ отображения кадра?

4b9b3361

Ответ 1

Следующее должно работать:

@app.route('/analysis/<filename>')
def analysis(filename):
    x = pd.DataFrame(np.random.randn(20, 5))
    return render_template("analysis.html", name=filename, data=x.to_html())
                                                                # ^^^^^^^^^

Отметьте документацию для дополнительных параметров, таких как стилизация CSS.

Кроме того, вам необходимо настроить шаблон следующим образом:

{% extends "base.html" %}
{% block content %}
<h1>{{name}}</h1>
{{data | safe}}
{% endblock %}

чтобы рассказать Jinja, что вы проходите в разметке. Спасибо @SeanVieira за подсказку.

Ответ 2

Хорошо, мне удалось получить очень хорошие результаты, объединив намеки, которые я получил здесь. В реальном зрителе Python я использую

@app.route('/analysis/<filename>')
def analysis(filename):
    x = pd.DataFrame(np.random.randn(20, 5))
    return render_template("analysis.html", name=filename, data=x)

например. Я отправляю полный файл данных в шаблон html. Мой шаблон html основан на загрузке. Поэтому я могу просто написать

{% extends "base.html" %}
{% block content %}
<h1>{{name}}</h1>
{{ data.to_html(classes="table table-striped") | safe}}
{% endblock %}

Есть множество других опций с бутстрапом, здесь вы можете посмотреть: http://getbootstrap.com/css/#tables

Base.html по существу копируется здесь http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xii-facelift

Следующий вопрос, очевидно, заключается в том, как построить такой фрейм. Кто-нибудь имеет опыт работы с Боке?

Спасибо вам и Мэтту и Шона.

томас