【发布时间】:2020-02-18 04:07:42
【问题描述】:
我正在尝试使用 Dash 显示数据框。我拥有的数据框是https://www.kaggle.com/timoboz/superbowl-history-1967-2020。我的目标是通过一个搜索按钮在网页上显示数据框,该按钮可以动态搜索所有列并过滤数据框。
到目前为止,我有以下显示数据框的代码。
import pandas as pd
import dash
import dash_table
from dash.dependencies import Input, Output
df = pd.read_csv('./Data/superbowl.csv')
PAGE_SIZE = 10
app = dash.Dash(__name__)
app.layout = dash_table.DataTable(
id='datatable-paging',
columns=[
{"name": i, "id": i} for i in df.columns #sorted(df.columns)
],
page_current=0,
page_size=PAGE_SIZE,
page_action='custom',
sort_action='custom',
sort_mode='single',
sort_by=[]
)
@app.callback(
Output('datatable-paging', 'data'),
[Input('datatable-paging', "page_current"),
Input('datatable-paging', "page_size"),
Input('datatable-paging', 'sort_by')])
def update_table(page_current,page_size,sort_by):
if len(sort_by):
dff = df.sort_values(
sort_by[0]['column_id'],
ascending=sort_by[0]['direction'] == 'asc',
inplace=False
)
else:
# No sort is applied
dff = df
return dff.iloc[
page_current * page_size:(page_current + 1) * page_size
].to_dict('records')
if __name__ == '__main__':
app.run_server(debug=True)
在阅读了https://dash.plot.ly/datatable/callbacks 文档,尤其是“带有过滤的后端分页”之后,我找不到像单个文本框一样搜索所有列并过滤匹配条目的数据框的方法。
【问题讨论】:
-
尝试在
dash_table.DataTable中添加filter_action='native'作为参数 -
@sumshyftw 每列添加过滤。我正在尝试将所有过滤器合并到一个文本框/输入框,该文本框/输入框过滤所有列。
-
filter_action native 不是服务器端排序 AFAIK
标签: python-3.x pandas plotly plotly-dash