pandas - Holoviz 面板不会在 Jupyter 笔记本中打印熊猫数据框行
问题描述
我正在尝试panel.interact
使用 Pandas 数据框而不是 Dask 数据框重新创建 Holoviz 教程中的第一个示例。我得到了滑块,但熊猫数据框行没有显示。
请参阅原始示例: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
扩展名中包含了一行,因为没有它,我会收到需要它的警告。没有它,我什至没有得到滑块。
我可以select_row(rowno=0)
在 Jupyter 单元格中单独调用该函数并获得该行的漂亮打印输出,因此该函数似乎正在正常工作。
任何帮助使其工作的帮助将不胜感激。谢谢。
解决方案
得到了解决方案。使用 Pandas,loc[rowno:rowno]
返回一个pandas.core.frame.DataFrame
长度为 1 的对象,它可以正常工作,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]
。
推荐阅读
- html - RTSP 链接无法在 Google Chrome 中打开
- c++ - QT:QTimeEdit 小部件中“向上”和“向下”箭头的事件
- ios - 如何合并 `iphoneos` 和 `iphonesimulator` 的构建,就像我们过去对使用 `lipo` 的框架所做的那样
- swift - 在 Swift 中监控 Keychain 项目的变化
- android-studio - Android Studio 虚拟设备扩展控件中的位置菜单
- wpf - WPF 绑定到以哈希键为索引的可观察集合
- python - Pandas - 保持组至少有两个不同的代码
- python - 如何在文件和终端之间切换 sys.stdout?
- python - 使用python在查询中传递变量
- intellij-idea - IntelliJ,Kotlin 格式:强制空块在一行