我正在尝试使用Pandas数据帧而不是Dask数据帧重新创建Holoviz教程中的第一个panel.interact示例。我得到了滑块,但pandas dataframe行没有显示。
查看原始示例:http://holoviz.org/tutorial/Building_Panels.html
我尝试使用了Holoviz示例中的Dask。Dask行可以很好地打印出来,但它演示了面板在打印时似乎以不同于Pandas dataframe行的方式处理Dask dataframe行。下面是我的最小代码:
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)函数,并获得该行的良好打印输出,因此该函数看起来像它应该工作的那样。
如果能帮上忙,我们将不胜感激。谢谢。
发布于 2019-08-13 10:32:52
找到解决方案了。对于Pandas,loc[rowno:rowno]返回一个长度为1的pandas.core.frame.DataFrame对象,该对象可以很好地用于panel,而locrowno返回一个pandas.core.series.Series对象,该对象不能很好地工作。因此,像这样修改select_row()函数可以使其全部正常工作:
def select_row(rowno=0):
row = df.loc[rowno:rowno]
return row但是,仍然不确定为什么panel将打印Dataframe对象,而不是Series对象。
注意:如果使用iloc,则使用add +1,即df.iloc[rowno:rowno+1]。
https://stackoverflow.com/questions/57469042
复制相似问题