【问题标题】:Holoviz panel will not print pandas dataframe row in Jupyter notebookHoloviz 面板不会在 Jupyter 笔记本中打印熊猫数据框行
【发布时间】:2019-08-12 22:31:25
【问题描述】:

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

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

我在 Holoviz 示例中尝试过使用 Dask。 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 dataframe jupyter-notebook holoviz panel-pyviz


    【解决方案1】:

    找到了解决办法。在 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]

    【讨论】:

      猜你喜欢
      • 2021-12-03
      • 1970-01-01
      • 2017-03-26
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      相关资源
      最近更新 更多