python - “我正在尝试根据选择的下拉值获取单行的值。输出出错。”
问题描述
“我正在尝试根据选择的下拉值获取单行的值。
我正在确认输出以确保我可以在同一晚做一个条形图。”同样需要您的专业知识帮助。
任何其他方式调用相同。提前感谢您的帮助。
代码:
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)
错误:
ash.exceptions.InvalidCallbackReturnValue:
<Output
table-container.children的回调>
返回的值的类型DataFrame
不是 JSON 可序列化的。
有问题的值要么是唯一返回的值,要么位于返回列表的顶层,并且具有字符串表示形式
州 太阳能电站数量 装机容量 (MW) 平均每台发电 MW (GWh) 1 亚利桑那州 48 1078 22.5 2550
通常,Dash 属性只能是 dash 组件、字符串、字典、数字、None 或它们的列表。
解决方案
我用于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)
这将在每次回调发生时临时为您的状态设置数据帧和过滤器,并仅输出与状态对应的行。
推荐阅读
- c# - 嵌套 {} 中的 SetArgs
- ruby-on-rails - Gem::Specification:Class (NoMethodError) 的未定义方法 `stubs_for' 你的意思是?存根
- sql - SQL,具体分组依据
- android - 是否可以从键盘 react-native 禁用某些键
- jupyter-notebook - 将 jupyter notebook 转换为幻灯片的问题
- angular - Angular Pipe 方法不会在每次点击时更新数据
- c - 带有 fprintf 字符串的宏函数
- python - 如何使用底层 pd.Dataframe 创建可切片的 torch.Dataset?
- pandas - 将非均匀空格分隔的浮点数列表拆分为 2 列
- .net-core - 如何访问 Airbnb API?或 Airbnb 正确的令牌?