我有一个正在使用bokeh serve呈现的Bokeh DataTable,并且我希望它开始排序而无需用户单击列标题。我想对行进行排序,以使生日日期按升序排列。我当前的代码如下:

from bokeh.layouts import column
from bokeh.models import ColumnDataSource
from bokeh.models.widgets import DataTable, TableColumn, DateFormatter
from bokeh.plotting import curdoc
from pandas import DataFrame

import datetime

# data is usually fetched from somewhere else but this is the same format
data = [
    ('dan', datetime.datetime(2017, 1, 16, 21, 30)),\
    ('joel', datetime.datetime(2016, 2, 21, 21, 30)),\
    ('jeff', datetime.datetime(2017, 10, 2, 21, 30))]

ne = DataFrame()
ne['Name'] = [x[0] for x in data]
ne['Birthday'] = [x[1] for x in data]

source = ColumnDataSource(ne)

columns = [
    TableColumn(field='Name', title='Name'),
    TableColumn(field='Birthday', title='Birthday', formatter=DateFormatter())
]

dt = DataTable(source=source, columns=columns)

curdoc().add_root(column(dt))

最佳答案

不知道这是否是最好的方法,但是通过添加以下行来对DataFrame进行预排序,我得到了您想要的结果

ne.sort_values('Birthday', inplace=True)

之前

source = ColumnDataSource(ne)

关于python - 如何强制对Bokeh DataTable进行排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45434973/

10-12 18:02
查看更多