Мне, должно быть, не хватает чего-то базового c о том, как FileInput виджет работает в панель pyviz .
В следующем коде я разрешаю пользователю выбрать CSV-файл и количество строк для отображения. Если файл не выбран, я генерирую случайные данные.
import pandas as pd; import numpy as np; import matplotlib.pyplot as plt
import panel as pn
import panel.widgets as pnw
pn.extension()
datafile = pnw.FileInput()
head = pnw.IntSlider(name='head', value=3, start=1, end=60)
@pn.depends(datafile, head)
def f(datafile, head):
if datafile is None:
data = pd.DataFrame({'x': np.random.rand(10)})
else:
data = pd.read_csv(datafile)
return pn.Column(f'## {head} first rows', data.head(head))
widgets = pn.Column(datafile, head)
col = pn.Column(widgets, f)
col
Вот проблема. Если я не выбираю файл и не играю с виджетом head
, панель работает должным образом: количество отображаемых строк изменяется при изменении виджета head
, и я вижу, что данные меняются после каждого обновления ,
Однако при выборе файла возникают две проблемы. Во-первых, данные не загружены. Во-вторых, колонка перестает реагировать на мои взаимодействия.
Кто-нибудь может сказать мне, в чем моя проблема?