首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyviz面板:无法使用FileInput小部件

Pyviz面板:无法使用FileInput小部件
EN

Stack Overflow用户
提问于 2020-02-09 15:54:57
回答 1查看 340关注 0票数 0

我一定是遗漏了一些关于pyviz panelFileInput小部件如何工作的基本信息。

在下面的代码中,我让用户选择一个csv文件和要显示的行数。如果没有选择文件,我会生成一些随机数据。

代码语言:javascript
复制
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小部件时,显示的行数会发生变化,并且可以看到每次更新后数据都是不同的。

但是,一旦我选择了一个文件,就会出现两个问题。首先,数据没有加载。其次,该列停止对我的交互做出反应。

有人能告诉我我的问题出在哪里吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-09 16:06:12

上面代码中的问题是,函数f中的datafile变量不是文件名,而是文件内容,即字节字符串。由于该错误,该函数抛出了一个未处理的异常,不幸的是,该异常没有在任何地方注册。

因此,数据读取行应该是

data = pd.read_csv(io.BytesIO(datafile))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60134561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档