首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Holoviz面板不会打印Jupyter笔记本中的pandas数据帧行

Holoviz面板不会打印Jupyter笔记本中的pandas数据帧行
EN

Stack Overflow用户
提问于 2019-08-13 06:31:26
回答 1查看 134关注 0票数 0

我正在尝试使用Pandas数据帧而不是Dask数据帧重新创建Holoviz教程中的第一个panel.interact示例。我得到了滑块,但pandas dataframe行没有显示。

查看原始示例:http://holoviz.org/tutorial/Building_Panels.html

我尝试使用了Holoviz示例中的Dask。Dask行可以很好地打印出来,但它演示了面板在打印时似乎以不同于Pandas dataframe行的方式处理Dask dataframe行。下面是我的最小代码:

代码语言:javascript
复制
import pandas as pd
import panel
l1 = ['a','b','c','d','a','b']
l2 = [1,2,3,4,5,6]
df = pd.DataFrame({'cat':l1,'val':l2})
def select_row(rowno=0):
    row = df.loc[rowno]
    return row
panel.extension()
panel.extension('katex')
panel.interact(select_row, rowno=(0, 5))

我在katex扩展中包含了一行,因为如果没有它,我会得到一个警告,告诉我需要它。没有它,我甚至连滑块都得不到。

我可以在Jupyter单元格中单独调用select_row(rowno=0)函数,并获得该行的良好打印输出,因此该函数看起来像它应该工作的那样。

如果能帮上忙,我们将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-08-13 10:32:52

找到解决方案了。对于Pandas,loc[rowno:rowno]返回一个长度为1的pandas.core.frame.DataFrame对象,该对象可以很好地用于panel,而locrowno返回一个pandas.core.series.Series对象,该对象不能很好地工作。因此,像这样修改select_row()函数可以使其全部正常工作:

代码语言:javascript
复制
def select_row(rowno=0):
    row = df.loc[rowno:rowno]
    return row

但是,仍然不确定为什么panel将打印Dataframe对象,而不是Series对象。

注意:如果使用iloc,则使用add +1,即df.iloc[rowno:rowno+1]

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

https://stackoverflow.com/questions/57469042

复制
相关文章

相似问题

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