Ошибка при создании списка выбора в боке

Я пытаюсь создать гистограмму, управляемую виджетом Select, и борюсь за самую первую часть чистой реализации виджета Select.

В настоящее время у меня есть список компаний, которые я генерирую со следующим:

tech_firms = list(sorted(tech_valid['Company Name'].unique()))

Насколько я знаю, это просто список. Когда я отлаживаю Jupyter, я получаю вывод списка (с полосой прокрутки).

Не работает. Приведенное ниже не работает, и я получаю сообщение об ошибке: ожидается элемент либо из List(Either(String, Tuple(Either(Int, String),String)) либо Dict (String, List(Either(String, Tuple(Either(Int,String)(,String))))), got Select(description='Tech Firms', options= ....) и список все имена в пределах tech_firms

#drop down population
select = Select(title="Tech Firms", value="Apple", options=tech_firms)
show(widgetbox(select))

Если я попробую следующее, это сработает, но это совсем не эффективное решение, учитывая, что у меня много имен в списке, и по мере изменения и развития набора данных вполне вероятно, что новые компании могут появиться, а другие могут исчезнуть. Что мне не хватает?

Работает:

#drop down population
select = Select(title='Tech Firms', value='Apple', options=['Apple', 'Google', 'DeepMind', 'Amazon'])
show(widgetbox(select))

Отображение некоторых значений, которые находятся в tech_firms по запросу: (я вытащил это из исключения, чтобы оно отображалось как есть во время броска):

got Select(description='Tech Firms', options=('Apple', 'Amazon', 'DeepMind', 'Google', 'Tesla, Inc.', 'Arlington Corp.', 'YouTube')

person StormsEdge    schedule 19.06.2018    source источник
comment
Вы можете показать некоторые значения, которые находятся в tech_firms?   -  person Druta Ruslan    schedule 19.06.2018
comment
@zimdero добавил к вышесказанному. Спасибо!   -  person StormsEdge    schedule 19.06.2018


Ответы (2)


Решение, которое я нашел, заключалось в том, что я без необходимости обозначал столбец данных как список. Видимо, по какой-то причине это не работает.

Мое решение состояло в том, чтобы создать новую переменную без списка, приведенного следующим tech_firms_list = tech_firms['Company Name'].unique()

После создания раскрывающегося списка выбора я отсортировал список при обработке параметра options с помощью следующего:

select = Select(title="Tech Firms", value="Amazon Inc.", options=sorted(tech_firms_list))

По-видимому, приведение списка вызвало некоторые проблемы в качестве аргумента. Если кто-нибудь точно знает, почему это произошло, пожалуйста, дайте мне знать, я хотел бы иметь четкое представление об этой механике.

person StormsEdge    schedule 19.06.2018
comment
Я понимаю, что это было очень давно, но вы когда-нибудь расшифровывали эту ошибку? - person alofgran; 08.11.2019
comment
К слову, описанный выше метод .unique() у меня не сработал. Однако это сработало, когда я преобразовал данные в столбце из чисел с плавающей запятой в строки. (т.е. tech_firms['Company Name'].astype(str).unique()) - person alofgran; 08.11.2019
comment
@alofgran К сожалению, нет. То, что я написал выше, сработало для меня, но я не уверен, почему произошла ошибка. Для меня нет ничего очевидного, что могло бы спровоцировать это исключение. - person StormsEdge; 08.11.2019

Это не работает, когда у вас есть na в вашем уникальном списке. Поэтому отбросьте na, прежде чем звонить unique().

tech_valid.dropna()
tech_valid['Company Name'].unique().tolist()
person Snehal Nair    schedule 09.01.2021