Da sh python: Как заполнить d cc .dropdown содержимым csv? - PullRequest
0 голосов
/ 11 февраля 2020

Я хотел бы создать веб-приложение на python и Da sh. Сначала я пытаюсь создать выпадающий список.

У меня есть эти данные:

Date,FS,Total,Used,Mount
2020-01-25-12-00,/dev/hd1/,350,300,/dev/mount1
2020-01-25-18-00,/dev/hd2/,370,320,/dev/mount2
2020-01-26-06-00,/dev/hd3/,395,350,/dev/mount3
2020-01-26-12-00,/dev/hd1/,350,300,/dev/mount1
2020-01-26-18-00,/dev/hd2/,370,320,/dev/mount2
2020-01-27-06-00,/dev/hd3/,395,350,/dev/mount3
2020-01-27-12-00,/dev/hd1/,350,300,/dev/mount1
2020-01-27-18-00,/dev/hd2/,370,320,/dev/mount2
2020-01-28-06-00,/dev/hd3/,395,350,/dev/mount3
2020-01-28-12-00,/dev/hd1/,350,300,/dev/mount1
2020-01-28-18-00,/dev/hd2/,370,320,/dev/mount2
2020-01-29-06-00,/dev/hd3/,395,350,/dev/mount3

Я хотел бы создать выпадающий список со всеми FS моего CSV. Я пытаюсь это:

import dash
import dash_core_components as dcc
import dash_html_components as html
import sys
import os
import pandas as pd 

app = dash.Dash


df = pd.read_csv('/xxx/xxx/xxx/xxx/xxx/xxx/data.txt')

test = df['FS'].unique()

dcc.Dropdown(
    options=[test],
    searchable=False
)  

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

Но вывод

Traceback (most recent call last):
  File "./import dash.py", line 25, in <module>
    app.run_server(debug=True)
TypeError: run_server() missing 1 required positional argument: 'self'

Можете ли вы сказать мне, почему?

1 Ответ

1 голос
/ 12 февраля 2020

В вашем коде есть некоторые проблемы:

  1. Вы должны присвоить имя вашему приложению da sh, например, app = dash.Dash('app_name')

  2. Ваш CSV имеет смешанные разделители (, в заголовке и ; в кортежах)

  3. Синтаксис раскрывающихся опций {'label: 'somelabel', 'value':'somevalue'}, например (ref. Раскрывающиеся примеры и справка )

options=[
        {'label': 'New York City', 'value': 'NYC'},
        {'label': 'Montreal', 'value': 'MTL'},
        {'label': 'San Francisco', 'value': 'SF'}
    ],
Вы должны назначить свои компоненты на app.layout

Подвести итог:

import dash
import dash_core_components as dcc
import dash_html_components as html
import sys
import os
import pandas as pd 


app = dash.Dash('app_name')

df = pd.read_csv('/xxx/xxx/xxx/xxx/xxx/xxx/data.txt')

test = df['FS'].unique()
options = [{'label': t, 'value': t} for t in test]

app.layout = dcc.Dropdown(
    options=options,
    searchable=False
    )

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

...