Я действительно запутался в том, как сортировать в черточной таблице.
Я слежу за документацией на сайте для печати и применяю ее самостоятельно df
, но пока не до конца понимаю, как она работает,Я чувствую, что мне не хватает некоторых основ, например, что такое sort_by=[]
? Как это тогда используется в:
dff = df.sort_values(
sort_by[0]['column_id'],
ascending=sort_by[0]['direction'] == 'asc',
inplace=False)
Я не понимаю, откуда взято 'column_id'
или 'direction'
.
df
в приведенном ниже примере - мой df
. Пожалуйста, обратите внимание на мой комментарий ниже. Я действительно в замешательстве!
import dash
from dash.dependencies import Input, Output
import dash_table
import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminder2007.csv')
df[' index'] = range(1, len(df) + 1) # Why do we add this?
app = dash.Dash(__name__)
PAGE_SIZE = 5
app.layout = dash_table.DataTable(
id='table-paging-and-sorting',
columns=[
{'name': i, 'id': i, 'deletable': True} for i in sorted(df.columns)
],
page_current=0,
page_size=PAGE_SIZE,
page_action='custom',
sort_action='custom',
sort_mode='single',
sort_by=[]
)
@app.callback(
Output('table-paging-and-sorting', 'data'),
[Input('table-paging-and-sorting', "page_current"), # How do i know what to put in input??
Input('table-paging-and-sorting', "page_size"),
Input('table-paging-and-sorting', '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)
Я не уверен в том, что означает sort_by[0][‘column_id’]
, то есть, откуда взялось column_id
?
Если вам нужен пример, посмотрите здесь: https://dash.plot.ly/datatable/callbacks