Python Dash 数据表应仅显示选定的列
Posted
技术标签:
【中文标题】Python Dash 数据表应仅显示选定的列【英文标题】:Python Dash Data Table should display only selected columns 【发布时间】:2020-06-18 22:55:23 【问题描述】:我正在尝试使用 datatable 仅显示我的数据框中的选定列。我可以选择我想要的行数。寻找类似的选项,例如我想在执行代码时选择单独显示某些列的行。
我的数据框有近 25 列。我不希望所有这些都显示,因此寻找此解决方案
这是我的代码:
import dash
import dash_core_components as dcc
import dash_bootstrap_components as dbc
import dash_html_components as html
import dash_table as dt
from dash.dependencies import Input, Output
import plotly.graph_objs as go
import plotly.express as px
import pandas as pd
df = pd.read_csv('E:\pylab\dshlab\infratickets.csv', low_memory = False )
app = dash.Dash(__name__)
#style='visibility': 'hidden'
dpdown = []
for i in df['ASSIGNED_GROUP'].unique() :
str(dpdown.append('label':i,'value':(i)))
app.layout = html.Div([
html.P([
html.Label("Choose a feature"),
html.Div(dcc.Dropdown(id='dropdown', options=dpdown),
style = 'width': '100px',
'fontSize' : '10px',
'padding-left' : '100px',
'display': 'inline-block')]),
#style='visibility': 'hidden',
html.Div(id='table-container', className='tableDiv'),
dcc.Graph(id = 'plot',style='height' : '25%', 'width' : '25%')
])
#dcc.Dropdown(id='dropdown', style='height': '30px', 'width': '100px', options=dpdown),
#dcc.Graph(id='graph'),
#html.Div(html.H3('country graph'),id='table-container1',className='tableDiv1')
@app.callback(
dash.dependencies.Output('table-container','children'),
[dash.dependencies.Input('dropdown', 'value')])
def display_table(dpdown):
df_temp = df[df['ASSIGNED_GROUP']==dpdown]
return html.Div([
dt.DataTable(
id='main-table',
columns=['name': i, 'id': i for i in df_temp.columns],
data=df_temp[0:5].to_dict('rows'),
style_table=
'maxHeight': '20%',
#'overflowY': 'scroll',
'width': '30%',
'minWidth': '10%',
,
style_header='backgroundColor': 'rgb(30, 30, 30)',
style_cell='backgroundColor': 'rgb(50, 50, 50)','color': 'white','height': 'auto','width': 'auto',#minWidth': '0px', 'maxWidth': '180px', 'whiteSpace': 'normal',
#style_cell='minWidth': '120px', 'width': '150px', 'maxWidth': '180px',
style_data='whiteSpace': 'auto','height': 'auto','width': 'auto'
)
])
if __name__ == '__main__':
app.run_server(debug=True)
【问题讨论】:
【参考方案1】:能想出解决办法
修改了代码
columns=['name': i, 'id': i for i in df_temp.columns]
到
columns=['name': i, 'id': i for i in df.loc[:,['Colname1','Colname2',...]
修好了
【讨论】:
【参考方案2】:你也可以按索引使用:
df = pd.read_csv('E:\pylab\dshlab\infratickets.csv', low_memory = False ) # load in the dataframe, then ressign with just the columns you want
df = df.iloc[:,1:3] # Remember that Python does not slice inclusive of the ending index.
将给出数据框的所有行和列 1 到 2。
【讨论】:
【参考方案3】:你可以改变
columns=['name': i, 'id': i for i in df_temp.columns],
如下:
首先定义TABLE_SELECTED_COLUMNS = ['col1','col2'. ...]
和
columns=["name": i, "id": i for i in TABLE_SELECTED_COLUMNS],
【讨论】:
以上是关于Python Dash 数据表应仅显示选定的列的主要内容,如果未能解决你的问题,请参考以下文章
具有Plotly / python数据框的语言环境库适用于jupyter,但不适用于Flask / dash
如何在 python(dash)仪表板中显示 png 文件和 csv 表