«Я пытаюсь получить значения в одной строке на основе выбранного значения раскрывающегося списка. Ошибка при выводе». - PullRequest
0 голосов
/ 06 февраля 2020

«Я пытаюсь получить значения из одной строки на основе выбранного раскрывающегося значения.

Я подтверждаю вывод, чтобы убедиться, что могу сделать гистограмму в то же самое время». Вам нужна помощь эксперта для того же.

Любые другие способы позвонить то же самое. Заранее спасибо за помощь.


код :

import dash
import pandas as pd
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import plotly.graph_objs as go
import pandas as pd
df = pd.read_csv('E:\pylab\dshlab\my_dash_app\solar.csv')

app = dash.Dash()
dpdown = []
for i in df['state']:
   str(dpdown.append({'label':i,'value':(i)}))

app.layout = html.Div([
    html.H4('Select your State'),
    dcc.Dropdown(id='dropdown', style={'height': '30px', 'width': '100px'}, options=dpdown,
        value=df['state']),
    #dcc.Graph(id='graph'),
    html.Div(id='table-container')
])

@app.callback(
    dash.dependencies.Output('table-container','children'),
    [dash.dependencies.Input('dropdown', 'value')])

def display_table(dpdown):
    return(df[df['state']==dpdown])

if __name__ == '__main__':
    app.run_server(debug=True)

Ошибка:

a sh .exceptions.InvalidCallbackReturnValue: обратный вызов для <Output table-container.children > вернул значение, имеющее тип DataFrame, которое не JSON сериализуемо.

Указанное значение является либо единственным возвращаемым значением, либо находится на верхнем уровне возвращаемого списка и имеет строковое представление

состояние Количество установленных солнечных установок (мегаватт) Средняя мощность МВт на генерацию завода (ГВт-ч) 1 Аризона 48 1078 22,5 2550

В общем, свойства Da sh могут быть только компонентами, строками, словарями, числами, None или списками из них. 1031 *

1 Ответ

0 голосов
/ 07 февраля 2020

Я использовал dash_table для создания таблицы. Подробнее об этом вы можете прочитать здесь.

Код выглядит следующим образом:

import dash
import pandas as pd
import dash_core_components as dcc
import dash_html_components as html
import dash_table as dt
from dash.dependencies import Input, Output
import plotly.graph_objs as go
import pandas as pd
df = pd.read_csv('E:\pylab\dshlab\my_dash_app\solar.csv')

app = dash.Dash()
dpdown = []
for i in df['state']:
   str(dpdown.append({'label':i,'value':(i)}))

app.layout = html.Div([
    html.H4('Select your State'),
    dcc.Dropdown(id='dropdown', style={'height': '30px', 'width': '100px'}, options=dpdown),
    #dcc.Graph(id='graph'),
    html.Div(
        id='table-container',
        className='tableDiv'
    )
])

@app.callback(
    dash.dependencies.Output('table-container','children'),
    [dash.dependencies.Input('dropdown', 'value')])

def display_table(dpdown):
    df_temp = df[df['state']==dpdown]
    return html.Div([
        dt.DataTable(
            id='main-table',
            columns=[{'name': i, 'id': i} for i in df_temp.columns],
            data=df_temp.to_dict('rows')
        )
    ])

if __name__ == '__main__':
    app.run_server(debug=True)

Это будет временно устанавливать подкадр данных и фильтровать ваше состояние каждый раз, когда происходит обратный вызов. и вывести только строку, соответствующую состоянию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...