Skip to main content

Dynamic Multi Select Filters for Streamlit

Open Demo App

Custom component to create dynamic multiselect filters in Streamlit. The filters apply to a dataframe and adjust their values based on the user selection (similar to Google Sheets slicers or Only Relevant Values in Tableau).

Basic documentation is available at https://arsentievalex.github.io/streamlit-dynamic-filters/

How to install and use the package:

  1. Install the package using pip: pip install streamlit-dynamic-filters

  2. Import the DynamicFilters class: from streamlit_dynamic_filters import DynamicFilters

  3. Create an instance of the DynamicFilters class and pass the dataframe and the list of fields that will serve as filters:

    dynamic_filters = DynamicFilters(df, filters=['col1', 'col2', 'col3', 'col4'])

  4. Display the filters in your app: dynamic_filters.display_filters()

  5. Display the filtered dataframe: dynamic_filters.display_df()

Sample usage with sidebar filters:

import streamlit as st
import pandas as pd
from streamlit_dynamic_filters import DynamicFilters

data = {
    'region': ['North America', 'North America', 'Europe', 'Oceania',
               'North America', 'North America', 'Europe', 'Oceania',
               'North America', 'North America', 'Europe', 'Oceania'],
    'country': ['USA', 'Canada', 'UK', 'Australia',
                'USA', 'Canada', 'UK', 'Australia',
                'USA', 'Canada', 'UK', 'Australia'],
    'city': ['New York', 'Toronto', 'London', 'Sydney',
             'New York', 'Toronto', 'London', 'Sydney',
             'New York', 'Toronto', 'London', 'Sydney'],
    'district': ['Manhattan', 'Downtown', 'Westminster', 'CBD',
                 'Brooklyn', 'Midtown', 'Kensington', 'Circular Quay',
                 'Queens', 'Uptown', 'Camden', 'Bondi']
}

df = pd.DataFrame(data)

dynamic_filters = DynamicFilters(df, filters=['region', 'country', 'city', 'district'])

with st.sidebar:
    st.write("Apply filters in any order 👇")

dynamic_filters.display_filters(location='sidebar')

dynamic_filters.display_df()

Demo GIF:

Sample usage with columns:

import streamlit as st
import pandas as pd
from streamlit_dynamic_filters import DynamicFilters

data = {
    'region': ['North America', 'North America', 'Europe', 'Oceania',
               'North America', 'North America', 'Europe', 'Oceania',
               'North America', 'North America', 'Europe', 'Oceania'],
    'country': ['USA', 'Canada', 'UK', 'Australia',
                'USA', 'Canada', 'UK', 'Australia',
                'USA', 'Canada', 'UK', 'Australia'],
    'city': ['New York', 'Toronto', 'London', 'Sydney',
             'New York', 'Toronto', 'London', 'Sydney',
             'New York', 'Toronto', 'London', 'Sydney'],
    'district': ['Manhattan', 'Downtown', 'Westminster', 'CBD',
                 'Brooklyn', 'Midtown', 'Kensington', 'Circular Quay',
                 'Queens', 'Uptown', 'Camden', 'Bondi']
}

df = pd.DataFrame(data)

dynamic_filters = DynamicFilters(df, filters=['region', 'country', 'city', 'district'])

st.write("Apply filters in any order 👇")

dynamic_filters.display_filters(location='columns', num_columns=2, gap='large')

dynamic_filters.display_df()

Demo GIF:

0.1.9 - 2nd August 2024

Added

  • Key for each elements in filters, so that multiple DynamicFilters can be used in one app (contribution by @vikashgraja)
  • reset_filters function (contribution by @ragchuck)

0.1.6 - 27th March 2024

Added

  • Sorted alphabetically filter labels

0.1.5 - 28th December 2023

Added by kzielins kzislinsk@gmail.com

  • Hierarchical filter selectors
  • Independent filters with diffrent sessions name

0.1.3 - 28th September 2023

Added

  • Ability to specify filter location in display_filters(). The filters can be either displayed in sidebar, main area or columns.
  • Error handling of invalid arguments in display_filters().

Changed

  • Renamed filter_except() to filter_df(). The function returns a filtered df.

Fixed

  • The StreamlitApiException that occured when selected values did not exist in the dataset.
  • Possibility to have more than one filter

Release files for streamlit-dynamic-filters 0.1.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for streamlit-dynamic-filters 0.1.9
File Size Uploaded
streamlit_dynamic_filters-0.1.9.tar.gz 7.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for streamlit-dynamic-filters 0.1.9
File Interpreter ABI Platform
streamlit_dynamic_filters-0.1.9-py3-none-any.whl Python 3 none any Details

Total release size: 14.4 kB

Release files / streamlit_dynamic_filters-0.1.9.tar.gz

Download URL streamlit_dynamic_filters-0.1.9.tar.gz
Size 7.6 kB
Tags Source
SHA-256 checksum
How to use checksums
ef65029ec249a3681390711b88fcad339bb3a4ce1e13857443d4553592e23cba
BLAKE2b-256 checksum
How to use checksums
a830f925349c2ba434b3c271811cbf4a4589828e34af69c0a132738650f98cdc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release files / streamlit_dynamic_filters-0.1.9-py3-none-any.whl

Download URL streamlit_dynamic_filters-0.1.9-py3-none-any.whl
Size 6.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0b2d6db612f35bf10e18f19de137c65b051d38ed000a6e3bfe973370b142b42d
BLAKE2b-256 checksum
How to use checksums
4381bce6dd65a9abb74e5319d3da4604e735791b6044b16744164bcd9a8a9f04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.1.9 This release

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page