从破折号中的下拉列表中的行过滤后显示数据表

时间:2019-11-04 05:00:51

标签: python flask plotly-dash plotly-python

我是Dash的新手。我想制作一个应用程序,在这里我可以从下拉过滤器中选择值,过滤数据集并显示数据表。我正在使用dash_table。

下面是我的示例应用代码。没有显示数据表。有人知道我做错了吗?如何在仪表板应用程序中渲染仪表板表?

import dash
import dash_html_components as html
import dash_core_components as dcc
import dash_table as dt
from dash.dependencies import Input, Output
import pandas as pd

df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/solar.csv')

app = dash.Dash(__name__)



states = df.State.unique().tolist()

app.layout = html.Div(
    children=[
    dcc.Dropdown(
            id='filter_dropdown',
            options=[{'label':st, 'value':st} for st in states],
            value = states[0]
            ),
    dt.DataTable(id='table-container') ]
)

@app.callback(
    Output('table-container', 'data'),
    [Input('filter_dropdown', 'value') ] )
def display_table(state):
    dff = df[df.State==state]
    return dff

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

顺便说一句,有人知道我在哪里可以找到带有代码的破折号应用程序库吗?

1 个答案:

答案 0 :(得分:0)

您必须设置数据表的列,并以特殊形式将数据帧作为字典返回。因此,请在代码中更改这两行以使其正常工作。

dt.DataTable(id='table-container', columns=[{'id': c, 'name': c} for c in df.columns.values])

return dff.to_dict('records')
  

顺便说一句,有人知道我在哪里可以找到带有代码的Dash应用程序库的集合吗?

Dash User Guide是带有大量示例代码的最佳场所。例如,您可以找到数据表there