'How to filter dataframe based on user input using streamlit and python
I have a datafarme that includes 3 columns i want to allow the user to filter the result based on the user input where the user can select which column to filter using a checkbox.
The problem is that if the user doesn't check the 2 checkbox it return the below error :
df_result_search = df[df['age']==(age_search)]
NameError: name 'age_search' is not defined
and if the user check all the checkbox and enter the values it return a wrong record while it takes only one value and filter based on it.
code:
import streamlit as st
import pandas as pd
data = {'name':['Tom', 'nick', 'krish', 'jack','Tom'],
'nickname':['jack','krish','karim','joe','joe'],
'age':[20, 18, 19, 18,22]}
df = pd.DataFrame(data)
df_result_search = pd.DataFrame()
searchcheckbox_name_nickname = st.checkbox("Name or Nickname ",value = False,key=1)
searchcheckbox_age = st.checkbox("age",value = False,key=2)
if searchcheckbox_name_nickname:
name_search = st.text_input("name")
nickname_search = st.text_input("nickname")
if searchcheckbox_age:
age_search = st.number_input("age",min_value=0)
if st.button("search"):
df_result_search = df[df['name'].str.contains(name_search,case=False, na=False)]
df_result_search = df[df['nickname'].str.contains(nickname_search,case=False, na=False)]
df_result_search = df[df['age']==(age_search)]
st.write("{} Records ".format(str(df_result_search.shape[0])))
st.dataframe(df_result_search)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
