【Dash】コールバックによるデータフレーム表示について

dashのコールバックによるデータフレームの表示方法がわかりません。

実現したいこと

app.py とtest_df.pyの2つのファイルがあります。

app.pyではdashのドロップダウンボックスを設定し、年数を選択できるようにします。そこで選択された年数をtest_df.pyへ渡します。
test_df.pyでは引数で渡された年数によりデータフレーム(df)を作成し,そのdfをreturnします。
次のようにコードを書いたのですが、returnしたdfをapp.pyでどのように設定したらよいのかわかりません。
下記のapp.pyコードにおいて"#←エラー箇所"のところのdfはどう設定したらよいのでしょうか?
調べても同じケースのコールバックが見当たらずどうぞよろしくお願いします。

#test_df.py def df_making(year): import pandas as pd if year==2022: df=pd.DataFrame(data=[[157,48],[162,52],[174,63]],index=['A','B','C'],columns=['height','weight']) else: df = pd.DataFrame(data=[[167, 58], [172, 62], [184, 73]], index=['A', 'B', 'C'], columns=['height', 'weight']) return df
#app.py import dash import dash_html_components as html import dash_core_components as dcc import dash_table from dash.dependencies import Input, Output #Dashアプリを作成する app = dash.Dash() year_list=[2021,2022] #----------------------------------------------------------------------------- app.layout = html.Div(children=[ dcc.Dropdown(id='year', options=year_list), html.H1('データフレーム'), dash_table.DataTable( id='df', columns=[ {"name": i, "id": i} for i in df.columns],  #←エラー箇所 data=df.to_dict("rows")  ) ]) @app.callback( Output('df','value'), Input('year','value'), ) def table(year): import test_df df = test_df.df_making(year) return df #----------------------------------------------------------------------------------------- if __name__ == '__main__': app.run_server(debug=True)
エラーメッセージ NameError: name 'df' is not defined

コメントを投稿

0 コメント