Вопрос о перекрытии фильтров для сюжетно-Dash в обратном вызове ⇐ Python
Вопрос о перекрытии фильтров для сюжетно-Dash в обратном вызове
Я хочу применить несколько фильтров к таблице данных в своем приложении Dash.
Каждый фильтр хорошо работает по отдельности, но не вместе.
Если я применю фильтр A, он отфильтрует таблицу данных (сначала отфильтрованную).
И если я применю фильтр B, он отфильтрует таблицу данных из исходной таблицы, но не из первых отфильтрованных данных.
@app.callback( Выход('обновление-rowdata-grid', 'rowData'), Input({'type': 'filter_cat', "table":ALL, 'index': ALL}, 'value'), Ввод({'тип': 'filter_num', 'таблица': ВСЕ, 'индекс': ВСЕ}, 'значение'), Input({'type': 'filter_date', 'table':ALL, 'index': ALL}, 'start_date'), Input({'type': 'filter_date', 'table':ALL, 'index': ALL}, 'end_date'), Состояние('filter_table', 'значение'), Состояние('второй_фильтр','значение'), предотвратить_initial_call=Истина) def apply_filter(cat, num, start_date, end_date, selected_table, выбранные_столбцы): df = get_selected_dataframe (выбранная_таблица) дфф = df.copy() тип_столбца = df[выбранные_столбцы].dtype если тип_столбца == 'объект' и кот: # cat — это вложенный список. Нам нужно извлечь внутренний список dff = dff[dff[выбранные_столбцы].isin(cat[0])] если тип_столбца в ['int64', 'float64'] и число: # То же, что и кот. Но он состоит из двух элементов (минимальное и максимальное значение). # Нам нужно извлечь оба dff = dff[(dff[выбранные_столбцы] >= num[0][0]) & ( dff[выбранные_столбцы] = start_date[0]) & ( dff[выбранные_столбцы] сначала отфильтрую данные. И после того, как я применил фильтр B => вторично отфильтрованные данные из отфильтрованных данных.
Как я могу это сделать?
Я хочу применить несколько фильтров к таблице данных в своем приложении Dash.
Каждый фильтр хорошо работает по отдельности, но не вместе.
Если я применю фильтр A, он отфильтрует таблицу данных (сначала отфильтрованную).
И если я применю фильтр B, он отфильтрует таблицу данных из исходной таблицы, но не из первых отфильтрованных данных.
@app.callback( Выход('обновление-rowdata-grid', 'rowData'), Input({'type': 'filter_cat', "table":ALL, 'index': ALL}, 'value'), Ввод({'тип': 'filter_num', 'таблица': ВСЕ, 'индекс': ВСЕ}, 'значение'), Input({'type': 'filter_date', 'table':ALL, 'index': ALL}, 'start_date'), Input({'type': 'filter_date', 'table':ALL, 'index': ALL}, 'end_date'), Состояние('filter_table', 'значение'), Состояние('второй_фильтр','значение'), предотвратить_initial_call=Истина) def apply_filter(cat, num, start_date, end_date, selected_table, выбранные_столбцы): df = get_selected_dataframe (выбранная_таблица) дфф = df.copy() тип_столбца = df[выбранные_столбцы].dtype если тип_столбца == 'объект' и кот: # cat — это вложенный список. Нам нужно извлечь внутренний список dff = dff[dff[выбранные_столбцы].isin(cat[0])] если тип_столбца в ['int64', 'float64'] и число: # То же, что и кот. Но он состоит из двух элементов (минимальное и максимальное значение). # Нам нужно извлечь оба dff = dff[(dff[выбранные_столбцы] >= num[0][0]) & ( dff[выбранные_столбцы] = start_date[0]) & ( dff[выбранные_столбцы] сначала отфильтрую данные. И после того, как я применил фильтр B => вторично отфильтрованные данные из отфильтрованных данных.
Как я могу это сделать?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Сюжетно, Питон. Могу ли я построить вертикальную линию на основе объекта datetime?
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Ошибка при развертывании приложения Dash с помощью инструментов Dash и рендеринга
Anonymous » » в форуме Python - 0 Ответы
- 38 Просмотры
-
Последнее сообщение Anonymous
-