首页 > 解决方案 > 用破折号下拉过滤 pd.DataFrame

问题描述

我是 Dash 的新手,并尝试使用下拉列表过滤以下数据框并显示过滤器数据框。我无法正确定义回调函数。任何示例代码都非常感谢,

df = pd.DataFrame({
    'col1': ['A', 'B', 'B', 'A', 'B', 'A'],
    'col2': [2, 1, 9, 8, 7, 4],
    'col3': [0, 1, 9, 4, 2, 3],   
})  

标签: pythonpandasplotly-dash

解决方案


这是我认为可能是一个不错的起点的文档页面。如果您提前知道数据框,则可以使用您知道需要的值填充下拉列表。如果你不这样做,那么你需要使用回调来更新下拉options道具。

该文档页面上的第一个示例显示了如何从下拉列表中获取值并将其输出。在您的情况下,您可以使用下拉列表来过滤数据框,例如:

@app.callback(
    Output('data-table-id', 'data'),
    [Input('dropdown-id', 'value')
)
def callback_func(dropdown_value):
    df_filtered = df[df['col1'].eq(dropdown_value)]

    return df_filtered.to_dict(orient='records)

然后将回调的输出设置为dataDash 数据表的属性。我为下拉列表的OutputInput部分添加了一些虚构的值,希望能给出总体思路。


推荐阅读