首页 > 解决方案 > 从破折号的下拉列表中过滤行后显示数据表

问题描述

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

我的示例应用程序代码如下。没有显示数据表。有谁知道我做错了什么?如何在 dash 应用程序中呈现 dash 表?

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)

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

标签: pythonflaskplotly-dashplotly-python

解决方案


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

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

return dff.to_dict('records')

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

有大量代码示例的最佳位置是Dash 用户指南例如,您可以在那里找到数据表。


推荐阅读