Использование select для выбора столбцов, которые отображаются в таблице данных Bokeh - PullRequest
0 голосов
/ 23 сентября 2019

Использование bokeh в первый раз, пытаясь создать нечто очень похожее на это: https://demo.bokeh.org/export_csv (ссылка на исходный код https://github.com/bokeh/bokeh/blob/master/examples/app/export_csv/main.py) в галерее. За исключением того, что я хочу использовать виджет выбора вместоползунок, и я хочу показать и скрыть столбцы вместо строк.

Мои данные выглядят примерно так:

 Name   A   B 
  x     1   2
  y     3   4

, и когда пользователь выбирает AI, он должен отображаться

Name   A 
  x    1
  y    3

Но сейчас мой код по-прежнему показывает все столбцы при использовании Select, но все столбцы, которые не были выбраны, имеют значение NaN. Так, например, если был выбран A, фактический результат равен

Name   A   B
 x    1   NaN
 y    3   NaN

, и если B былвыбрал

Name   A   B
 x    NaN  2
 y    NaN  4

Вот мой код пока что

import pandas as pd
from bokeh.layouts import row, column
from bokeh.models import ColumnDataSource
from bokeh.models.widgets import Select,DataTable,TableColumn,NumberFormatter
from bokeh.io import curdoc, output_file, show
from bokeh.layouts import widgetbox


def update():
    element_selected=select.value
    current=df.loc[:,["Run",element_selected]]
    source.data=current

df = pd.read_csv('BokehTest.csv')

source = ColumnDataSource(data=df)

columns=[]
list_of_cols=df.columns.tolist()

for col in list_of_cols:
    if df[col].dtype=='float64':
        columns.append(TableColumn(field=col, title=col, formatter=NumberFormatter(format="0.00")))
    else:
        columns.append(TableColumn(field=col, title=col))


data_table = DataTable(source=source, columns=columns, width=1500, height=500)

select = Select(title="Option:", value="9Be", options=list_of_cols)
select.on_change('value', lambda attr, old, new: update())


curdoc().add_root(row(select,data_table))
curdoc().title='Bokeh'

update()

бонусных очков, если вы можете сказать мне, почему название не появляется, но я думаю, что это как-то связано срасположение

...