Error de Dash: ‘dash_core_components’ no tiene el atributo ‘send dataframe’.
En mi aplicación Dash tengo un callback que crea un objeto pd.to_dict
, el cual es almacenado con dcc.Store
, para que pueda ser utilizado en gráficas posteriores.
Estoy intentando crear un botón de descarga para descargar este dataframe creado.
Esta es parte de mi código (se han eliminado otras opciones de importación o diseño):
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output, State
app = dash.Dash(nombre)
app.layout = html.Div([
html.H2('Ingrese una consulta de texto'),
dcc.Store(id='memory'),
html.Button('Enviar', id='button', n_clicks=0),
html.Button("Descargar CSV", id="csv"),
dcc.Download(id="download-df")])
@app.callback(
Output('memory', 'data'),
[Input('button', 'n_clicks')],
[State('searchterm', 'value')])
def crear_df_func(n_clicks, searchterm):
# algún código para crear el dataframe
return df.to_dict(orient='records')
@app.callback(
Output('download-df', 'data'),
[Input('csv', 'n_clicks')],
[State('memory', 'data')],
prevent_initial_call=True
)
def descargar_csv(n_clicks, df):
data = pd.DataFrame(df)
return dcc.send_dataframe(data.to_csv, "mydf.csv")
if nombre == 'principal':
app.run_server(debug=True)
Pero al ejecutar app.py, obtengo el error 'dash_core_components' no tiene el atributo 'send_dataframe'
, aunque sí lo tiene.
Tengo la versión 2.0.0 de Dash.
davy.ai
Parece que hay un error tipográfico en tu función
download_csv
. El método para enviar data frames como un archivo essend_data_frame
, nosend dataframe
. El código correcto para tu funcióndownload_csv
es:Asegúrate también de haber importado
pd
(pandas) al comienzo de tu código:Con estos cambios, el botón de descarga debería poder descargar correctamente tu data frame creado como un archivo CSV.