如何使用 Dash 在具有大型数据框的数据表中提供分页
How to provide Pagination in Data Tables with large dataframes using Dash
我目前使用的是 dash-1.0.1。我正在创建一个 public 仪表板,其中 returns 数据形式的详细报告 Table。但是数据 Table 很大,我想为数据 Table 提供 分页 功能和 显示 [条目数] 下拉菜单显示页面 table 中的条目数。
有什么方法可以实现吗?
分页选项似乎已添加到 DataTable class,可使用多个参数进行配置。
根据给定的示例 here,我创建了一个带分页的 DataTable 工作演示,并带有一个允许 select 条目数的下拉列表:
import dash
from dash.dependencies import Input, Output
import dash_table
import dash_html_components as html
import dash_core_components as dcc
import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminder2007.csv')
df[' index'] = range(1, len(df) + 1)
app = dash.Dash(__name__)
PAGE_SIZE = 15
app.layout = html.Div([
html.Div('Data table pagination test'),
dcc.Dropdown(
id='select_page_size',
options=[{'label': '5', 'value': 5}, {'label': '10', 'value': 10}, {'label': '15', 'value': 15}],
value=5
),
html.Div(dash_table.DataTable(
id='datatable-paging',
columns=[{"name": i, "id": i} for i in df.columns],
data=df.to_dict("rows"),
page_size=PAGE_SIZE,
page_current=0,
))
])
@app.callback(
Output('datatable-paging', 'page_size'),
[Input('select_page_size', 'value')])
def update_graph(page_size):
return page_size
if __name__ == '__main__':
app.run_server(debug=True)
注意:在以前的版本中DataTable
接收分页设置作为字典:
dash_table.DataTable(
...
pagination_settings={
'current_page': 0,
'page_size': PAGE_SIZE
},
)
结果:
我目前使用的是 dash-1.0.1。我正在创建一个 public 仪表板,其中 returns 数据形式的详细报告 Table。但是数据 Table 很大,我想为数据 Table 提供 分页 功能和 显示 [条目数] 下拉菜单显示页面 table 中的条目数。
有什么方法可以实现吗?
分页选项似乎已添加到 DataTable class,可使用多个参数进行配置。
根据给定的示例 here,我创建了一个带分页的 DataTable 工作演示,并带有一个允许 select 条目数的下拉列表:
import dash
from dash.dependencies import Input, Output
import dash_table
import dash_html_components as html
import dash_core_components as dcc
import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminder2007.csv')
df[' index'] = range(1, len(df) + 1)
app = dash.Dash(__name__)
PAGE_SIZE = 15
app.layout = html.Div([
html.Div('Data table pagination test'),
dcc.Dropdown(
id='select_page_size',
options=[{'label': '5', 'value': 5}, {'label': '10', 'value': 10}, {'label': '15', 'value': 15}],
value=5
),
html.Div(dash_table.DataTable(
id='datatable-paging',
columns=[{"name": i, "id": i} for i in df.columns],
data=df.to_dict("rows"),
page_size=PAGE_SIZE,
page_current=0,
))
])
@app.callback(
Output('datatable-paging', 'page_size'),
[Input('select_page_size', 'value')])
def update_graph(page_size):
return page_size
if __name__ == '__main__':
app.run_server(debug=True)
注意:在以前的版本中DataTable
接收分页设置作为字典:
dash_table.DataTable(
...
pagination_settings={
'current_page': 0,
'page_size': PAGE_SIZE
},
)
结果: