如何删除部分数据源?

时间:2019-02-15 08:18:11

标签: python bokeh

我想通过打补丁(即不重新发送整个数据)从数据源中删除一个或多个值。我可以通过切片来做到这一点。例如,如果我要删除

的第一个值
data = dict(x=list(range(1,5)), y=list(range(6,10)))
source = ColumnDataSource(data)
print(source.data)
  

{'x':[1、2、3、4],'y':[6、7、8、9]}

我可以使用

source.patch(dict(x=[(slice(0,2),[2])], y=[(slice(0,2),[7])]))
print(source.data)
  

{'x':[2,3,4],'y':[7,8,9]}

这要求我根据要删除的位置知道上一个或下一个值。您如何从所有列中删除索引/一系列索引?这是推荐的方法吗?

1 个答案:

答案 0 :(得分:1)

patch方法只能用于将现有值更新为新值,即不能用于更改列的大小。实际上,您在新数据小于切片长度的情况下,实际上应该产生一个RuntimeError,但令我惊讶的是,事实并非如此。

除了重新发送整个列外,无法从CDS列中删除数据。这是因为在JavaScript方面,浏览器中的类型化数组不支持Numpy等在Python方面可用的所有奇特切片和索引。

根据您的具体情况,可能会有更多或更少的变通办法,例如也许您可以修补要“删除”为NaN的值。但这并不是总能“起作用”的东西(例如,它在行中表现不佳)。