I want to return the whole data table properties from the callbacks function cause I want to transpose data and modify it based on the dropdown filter and add style data conditions based on filter and display quarter and annual data
import pandas as pd
import numpy as np
import seaborn as sns
import warnings
import matplotlib.pyplot as plt
#from prophet import Prophet
import dash # you need Dash version 1.15.0 or higher
import dash_table
import dash_html_components as html
import dash_core_components as dcc
from dash.dependencies import Input, Output,State
import dash_auth
from dash.dash_table import DataTable, FormatTemplate
import pandas as pd
import plotly.graph_objs as go
import plotly.express as px
df=pd.read_excel("D:\\Early alarm system\\quarters and annual.xlsx",sheet_name='Sheet1')
#df
df=df.sort_values(by=['Date'],ascending=True)
df.replace(to_replace='-',value=np.nan,inplace=True)
#df=df.drop('Year',axis=1).round(decimals=2)
#df=df.round(decimals=2)
df.head(5)
df['quarter'] = pd.PeriodIndex(df.Date, freq='Q').astype(str)
df['Year'] = pd.PeriodIndex(df.Date, freq='Y').astype(str)
df.head(4)
periodicity=df.periodicity.unique()
app = dash.Dash(__name__)
app.layout = html.Div([
html.Div([ html.Label('Periodicity'),dcc.Dropdown(
id="filter_dropdown",
options=[{'label':i,'value':i} for i in df.periodicity.unique()],
placeholder="Select periodicity",
#multi=True,
value=periodicity[0]
)]),
html.Div(id="final_table")
])
@app.callback(Output("final_table","table"),
[Input("filter_dropdown","value")])
def update(Select_periodicity):
df_filtered = df[df['periodicity']==Select_periodicity].dropna(how='all',axis=1)
if Select_periodicity == 'Annual':
df_Transpose=df_filtered.drop(['Date','quarter','periodicity'],axis=1)
df_Transpose=df_Transpose_annual.set_index('Year').T
df_Transpose.reset_index(inplace=True)
df_Transpose.rename(columns={'index':'Indicators'},inplace=True)
elif Select_periodicity == 'Quarter':
df_Transpose=df_filtered.drop(['Date','Year','periodicity'],axis=1)
df_Transpose=df_Transpose_annual.set_index('quarter').T
df_Transpose.reset_index(inplace=True)
df_Transpose.rename(columns={'index':'Indicators'},inplace=True)
return [ dash_table.DataTable(
id='table',
columns=[{'name':i,'id': i} for i in df_Transpose.columns],
data= df_Transpose.to_dict("records"))]
if __name__ == "__main__":
app.run_server(debug=False)