Мне, должно быть, не хватает чего-то базового о том, как виджет 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
, и я вижу, что данные меняются после каждого обновления.
Однако, как только я выбираю файл, возникают две проблемы. Во-первых, данные не загружаются. Во-вторых, колонка перестает реагировать на мои взаимодействия.
Кто-нибудь может сказать мне, в чем моя проблема?