如何将Dash DataTable列头的自由文本过滤器替换为下拉筛选器
要实现Dash DataTable列头内置的下拉过滤器,可直接通过组件原生的列配置参数实现,无需借助外部组件,具体操作如下:
配置步骤
- 初始化DataTable时开启原生过滤能力,设置参数
filter_action="native" - 对需要使用下拉过滤的列,在列配置项中添加
filter_options参数,指定过滤类型为下拉,同时传入该列的唯一值作为下拉选项
示例代码
import dash from dash import dash_table import pandas as pd # 构造示例数据 df = pd.DataFrame({ "部门": ["研发", "产品", "运营", "销售", "研发", "运营"], "员工数": [25, 8, 16, 32, 19, 14], "月度营收": [450, 210, 320, 680, 410, 290] }) app = dash.Dash(__name__) app.layout = dash_table.DataTable( data=df.to_dict("records"), columns=[ { "name": "部门", "id": "部门", # 配置当前列使用下拉过滤器 "filter_options": { "type": "dropdown", # 自动提取当前列的所有唯一值作为下拉选项 "options": [{"label": val, "value": val} for val in df["部门"].unique()], # 开启多选,可同时筛选多个值,和Excel筛选效果一致 "multi": True } }, {"name": "员工数", "id": "员工数"}, {"name": "月度营收", "id": "月度营收"} ], # 开启表格原生过滤功能 filter_action="native", style_table={"width": "100%"} ) if __name__ == "__main__": app.run_server(debug=True)
补充说明
- 若你的表格数据是动态更新的,可通过回调动态更新对应列的
filter_options.options取值,保证下拉选项始终和当前表格的数据集匹配 - 所有列都可单独配置是否使用下拉过滤器,其余未配置的列默认使用原生自由文本过滤器
内容的提问来源于stack exchange,提问作者dzieciou
相关产品推荐
相关产品推荐

