Holoviz 面板不会在 Jupyter 笔记本中打印熊猫数据帧行



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

请参阅原始示例:http://holoviz.org/tutorial/Building_Panels.html

我尝试使用Dask,如Holoviz示例。Dask 行打印出来很好,但它表明面板似乎在打印时处理 Dask 数据帧行的方式与 Pandas 数据帧行不同。这是我的最小代码:

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)函数并获得该行的漂亮打印输出,因此看起来该函数正在正常工作。

任何帮助使其工作将不胜感激。谢谢。

有一个解决方案。对于 Pandas,loc[rowno:rowno]返回一个长度为 1 的pandas.core.frame.DataFrame对象,该对象适用于panel,而 loc[rowno] 返回一个工作效果不佳的pandas.core.series.Series对象。因此,像这样修改select_row()函数使其全部工作:

def select_row(rowno=0):
row = df.loc[rowno:rowno]
return row

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

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

相关内容

  • 没有找到相关文章

最新更新