Python Да sh Таблица данных должна отображать только выбранные столбцы - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь отобразить только выбранные столбцы из моего фрейма данных, используя 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)

Ответы [ 2 ]

1 голос
/ 06 марта 2020

Возможность выяснить решение

изменил код

columns=[{'name': i, 'id': i} for i in df_temp.columns]

на

columns=[{'name': i, 'id': i} for i in df.loc[:,['Colname1','Colname2',...]

исправил его

0 голосов
/ 08 марта 2020

Вы также можете использовать по индексу:

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 фрейма данных.

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