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 表

python: dash 实况情节图例

如何在 pyspark 数据框中读取 csv 文件时读取选定的列?

pyspark如何根据值添加选定的列

如何仅使用选定的列从Access数据库填充我的DataGridView?