Самый простой способ создать причудливую таблицу javascript из фрейма данных pandas и встроить ее в один файл html - PullRequest
0 голосов
/ 07 мая 2020

Я ищу способ создать причудливую таблицу (или на самом деле несколько таблиц), встроенную в один html файл, который выходит за рамки того, что может сделать обычный pandas dataframe .to_ html () .

Он должен иметь следующие функции: - разрешает фильтрацию (на стороне клиента) - разрешает вращение (на стороне клиента) - имеет дополнительные параметры форматирования (например, обеспечение выравнивания чисел по правому краю и т. c)

Какой самый простой способ встроить шаблон javascript в html, который я затем могу передать сериализованным json, созданным фреймом данных pandas, и встроить его в один файл. Будем признательны за любые рекомендации.

1 Ответ

1 голос
/ 08 мая 2020

Возможно, Simple-DataTables будет вам полезен.

Вот минимальный пример, который генерирует рабочий файл demo.htm:

import os
import pandas as pd
import numpy as np
import jinja2

# Project specific global variables: paths, URIs, etc.
file_abspath = os.path.abspath(__file__)
file_basename = os.path.basename(file_abspath)
file_dirname = os.path.dirname(file_abspath)


def main():
    """The main function."""
    os.chdir(file_dirname)

    # Create a random dataframe.
    df_cols = list('ABCD')
    row_count = 12
    df = pd.DataFrame(np.random.randint(0, 100, size=(
        row_count, len(df_cols))), columns=df_cols)

    # Generate HTML from template.
    template = jinja2.Template("""<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>Demo</title>
    <link href="https://cdn.jsdelivr.net/npm/simple-datatables@latest/dist/style.css" rel="stylesheet" type="text/css">
    <script src="https://cdn.jsdelivr.net/npm/simple-datatables@latest" type="text/javascript"></script>
    </head>

    <body>

        {{ dataframe }}

    </body>

    <script defer type="text/javascript">
        let myTable = new simpleDatatables.DataTable("#myTable");
    </script>

</html>"""
                               )

    output_html = template.render(dataframe=df.to_html(table_id="myTable"))

    # Write generated HTML to file.
    with open("demo.htm", "w", encoding="utf-8") as file_obj:
        file_obj.write(output_html)


if __name__ == "__main__":
    main()


Я надеюсь, что это поможет, но это может или не может обеспечить всю функциональность, о которой вы просили, может потребоваться проверить документацию по таблицам данных для получения более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...