Python 如何根据短划线回调加载数据帧?
我有以下功能将下拉选择与文件路径关联:Python 如何根据短划线回调加载数据帧?,python,html,plotly-dash,Python,Html,Plotly Dash,我有以下功能将下拉选择与文件路径关联: def origin_func(): return html.Div( children=[ dcc.Markdown('Select country'),
def origin_func():
return html.Div(
children=[
dcc.Markdown('Select country'),
dcc.Dropdown(
id='origin_div',
options=[{'label': 'Malta', 'value': './data/malta.csv'}, {'label': 'Japan', 'value': './data/japan.csv'}],
value='./data/malta.csv'
)
]
)
通过回调,我可以将此选择转换为数据帧:
@app.callback(
Output('country_table', 'children'),
Input('origin_div', 'value')
)
def countrytable(origin_div):
df = pd.read_csv(origin-div)
return df
问题是,如何将存储在Dash变量(“country_table”)中的Pandas数据帧传递到布局函数中,例如:
def destination_func():
children=[
dcc.Markdown('Select country of destination'),
dcc.Dropdown(
id='destination_div',
options=[{'label': i, 'value': i} for i in df['Destination'].drop_duplicates()],
value=df['Destination'].drop_duplicates()[0]
)
]
)
我认为主要有两种方法
countrytable
回调函数的输出设置为您希望数据帧结束的位置
df.to_dict(orient='records')
然后,当你以后需要它的时候,把它读回来,然后再做
df=pandas.DataFrame.from_dict(dict_arg)
在dict
中读取以转换为数据帧的函数将从第一个回调中获取输出
,作为输入
或状态
参数
编辑:
您需要为第二个选项添加的回调如下所示:
@app.callback(
输出('which-component-in-your-layout'、'which-prop'),
输入('country_table'、'children')
)
def countrytable(存储的_df):
df=pd.DataFrame.from_dict(存储的_df)
返回df
我认为有两种主要方法可以做到这一点
countrytable
回调函数的输出设置为您希望数据帧结束的位置
df.to_dict(orient='records')
然后,当你以后需要它的时候,把它读回来,然后再做
df=pandas.DataFrame.from_dict(dict_arg)
在dict
中读取以转换为数据帧的函数将从第一个回调中获取输出
,作为输入
或状态
参数
编辑:
您需要为第二个选项添加的回调如下所示:
@app.callback(
输出('which-component-in-your-layout'、'which-prop'),
输入('country_table'、'children')
)
def countrytable(存储的_df):
df=pd.DataFrame.from_dict(存储的_df)
返回df
Hi@coralvanda,由于2d方式不起作用——无论我把它放在“dict_arg”中,我都有以下错误:“NameError:name'dict_arg'未定义”——您将如何执行第一个选项?添加了一个示例。如果您仍然需要帮助,请告诉我。这对我不起作用,我有以下错误:“NameError:name'df'未定义”。我尝试做的想法是能够选择一个csv并通过Dash中的下拉列表将其作为数据帧加载。一个完整的、有效的、最简单的例子将是一个很大的帮助,因为我看到网络上有很多人在这个问题上苦苦挣扎,却没有找到解决方案。你能分享完整的回溯吗?通过尝试提供一个最简单的例子来指出我在这个问题上面临的问题,我想到了一个令人满意的解决方案。不幸的是,它带来了另一个问题,我制定了。嗨@coralvanda,因为2d方式不起作用——不管我把它放在‘dict_arg’中,我都有以下错误:“NameError:name‘dict_arg’没有定义”——你会如何做第一个选项?添加了一个示例。如果您仍然需要帮助,请告诉我。这对我不起作用,我有以下错误:“NameError:name'df'未定义”。我尝试做的想法是能够选择一个csv并通过Dash中的下拉列表将其作为数据帧加载。一个完整的、有效的、最简单的例子将是一个很大的帮助,因为我看到网络上有很多人在这个问题上苦苦挣扎,却没有找到解决方案。你能分享完整的回溯吗?通过尝试提供一个最简单的例子来指出我在这个问题上面临的问题,我想到了一个令人满意的解决方案。不幸的是,它带来了另一个问题,我制定。