Hello team,
I’m new to Panel and I love this amazing tool. Recently, I’m running into an issue with a use case and hope I can get some directions from experts in this forum. My use case is to build a Panel app and query the database. Then I need to split dataframe output to several smaller ones based on column filter condition. I’m able to query the database but unable to filter the dataframe output . Below is my code for your reference. Much appreciate if anyone can share some lights on this topic!
Error message I have:
Below is the script for your reference:
import panel as pn
import param
import datetime
pn.extension()
DATE_BOUNDS = (datetime.date(2000, 1, 1), datetime.datetime.now().date())
class query_db(param.Parameterized):
account_id = param.String(default=str(‘12345’), doc=‘Account ID’)
start_date = param.Date(default=(datetime.date.today() - datetime.timedelta(days=365)), bounds=DATE_BOUNDS)
end_date = param.Date(default=datetime.date.today(), bounds=DATE_BOUNDS)
button = param.Action(default=lambda x: x.param.trigger(‘button’), label=‘Run db query!’)
@param.depends("button")
def df_return(self):
#df=snowflake_run(self.account_id,cs,self.start_date.strftime('%Y-%m-%d'),self.end_date.strftime('%Y-%m-%d'))
# create a dummy dataset below for illustration
df = pd.DataFrame({
'int': [1, 2, 3],
'float': [3.14, 6.28, 9.42],
'type': ['A', 'B', 'C'],
'bool': [True, False, True],
'date': [dt.date(2019, 1, 1), dt.date(2020, 1, 1), dt.date(2020, 1, 10)],
'datetime': [dt.datetime(2019, 1, 1, 10), dt.datetime(2020, 1, 1, 12), dt.datetime(2020, 1, 10, 13)]
}, index=[1, 2, 3])
return df
class Athlete(param.Parameterized):
db = param.ClassSelector(class_=query_db, default=query_db())
athlete = Athlete()
def new_class(cls, **kwargs):
“Creates a new class which overrides parameter defaults.”
return type(type(cls).name, (cls,), kwargs)
query_condition = pn.Param(
athlete.db,
default_layout=new_class(pn.GridBox, ncols=3),
show_name=False,
widgets = {
“button”: {“button_type”: “primary”},
“start_date”: pn.widgets.DatePicker,
“end_date”: pn.widgets.DatePicker } )
def return_tab():
return pn.panel(athlete.db.df_return, loading_indicator=True)
df1=return_tab()
df_A=df1._pane[df1._pane.type==‘A’]
pn.Column(query_condition,df1,df_A)