Вы не упомянули конкретную ошибку, но я думаю, что вижу проблему.Ваш обратный вызов выводит (Output
) в options
prop выпадающего компонента.Звучит так, как если бы вы хотели выводить что-то еще, например, div
или p
компонент.У вас есть display-value
ID для одного div
, так что, может быть, именно туда вы хотите, чтобы он пошел?Попробуйте изменить свой обратный вызов следующим образом:
@app.callback(
Output('display-value', 'children'),
[Input('dropdown', 'value')])
def callback_a(i):
return df.loc[i, 1:3]
РЕДАКТИРОВАТЬ:
Одна из проблем заключается в настройке индекса для использования значений столбца state
.set_index
возвращает значение, но вы его не присвоили, поэтому ничего не происходит.Используйте df = df.set_index('state')
или включите флаг inplace=True
внутри вызова метода.
Это вызывает ошибку ключа, потому что df
не имеет значений состояния в качестве индексов, поэтому вы не можете смотретьдля них.Теперь вы можете использовать df.loc[i]
в вашем обратном вызове, и он сможет найти правильный ряд.Вы не можете использовать [1:3]
здесь, потому что loc
ссылается по имени, а не по значению строки / столбца, и у вас нет столбцов, названных целыми числами.Вы могли бы сделать df.loc[i].tolist()[1:3]
.Однако с state
в качестве индекса у вас есть только два значения в каждой строке (индексы 0 и 1), поэтому часть :3]
никогда ничего не получит.Вы просто получите то, что находится в индексе 1.
Наконец, и я должен был упомянуть об этом раньше, вы настроили df
как глобальную переменную, что, как правило, не лучшая практика.Было бы лучше использовать функцию обратного вызова для загрузки df
из вашего CSV-файла и добавления его к какому-либо компоненту, например dash_table.DataTable
.Затем вы можете использовать другие обратные вызовы для извлечения значений из этой таблицы вместо ссылки на глобальную переменную.