Используйте DA SH для отображения двух фреймов данных на одной странице. - PullRequest
0 голосов
/ 13 февраля 2020

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

import dash
import dash_html_components as html
import pandas as pd

#would like to add a second dataframe here
df1 = pd.read_sas('C:\PY_DASH\file1.sas7bdat', format = 'sas7bdat', encoding='utf-8' )

def generate_table(dataframe, max_rows=7):
    return html.Table(
        # Header
        [html.Tr([html.Th(col) for col in dataframe.columns])] +

        # Body
        [html.Tr([
            html.Td(dataframe.iloc[i][col]) for col in dataframe.columns
        ]) for i in range(min(len(dataframe), max_rows))]
    )

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)

#I would like to add the second table here
app.layout = html.Div(children=[
    html.H1(children='QA Test: Test 0-1: Output Files Record Count Comparison'),
    generate_table(df1)
])

if __name__ == '__main__':
    app.run_server(debug=True, port=8000)

1 Ответ

0 голосов
/ 18 февраля 2020

Попробуйте выделить кусок кода, который генерирует каждую таблицу. Затем соберите их в контейнер ad cc, который затем можно использовать в макете. Это облегчает отладку и позже :). Ниже приведен пример кода, чтобы дать вам представление о том, что я имею в виду.

Сначала раздел для создания таблицы 1. В этом вы можете использовать вашу функцию generate_table

one_row = html.Tr([html.Td(<content>, id="row1" )])
t_head = [
      html.Thead(html.Tr([html.Th("Table1")]))
]
table1_section = dbc.Card(children=[
    dbc.CardHeader(html.H5("Table1 header", id="t_head")),
    dbc.CardBody([
      dbc.Table(t_head + [html.Tbody([one_row])])
    ])
])

Аналогично table2_section Затем соберите его как dbc.Row(), если требуется.

Наконец, соберите их все вместе в dbc.Container, например:

page_content = dbc.Container([
      table1_section,
      table2_section,
      somegraph_section
], fluid=True)

Надеюсь, это поможет.

...