我有一个反应组件,它执行一些复杂的交互式可视化,包括下载数据。我希望它可以从 jupyter notebook 和/或 jupyterlab 中获得。
我几乎可以肯定,这需要编写扩展程序,而对于 jupyter notebook 和 jupyterlab,创建扩展程序的过程似乎大不相同。
我查找了几个现有的扩展,发现 jupyter-react-js,它似乎被放弃了。jupyterlab 声称可以更好地与 react 集成,特别是https://jupyterlab.readthedocs.io/en/stable/developer/virtualdom.html展示了如何包装 react 组件。尽管这样的代码会去哪里,以及它如何在 python 笔记本中可用,但根本不清楚。
jupyterlab github 中有许多扩展,但文档很少,而且它们都没有做足够类似的事情。大多数东西都基于 ipywidgets 或 mime 类型的扩展。
我怎样才能让这些东西很好地合作?
我有一个带有“元数据”列的熊猫数据框,该列应该包含一个字典作为值。但是,缺少某些值并设置为 NaN。我希望将其改为 {}。有时,整个列都丢失了,将其初始化为 {} 也是有问题的。
用于添加列
tspd['metadata'] = {} # fails
tspd['metadata'] = [{} for _ in tspd.index] # works
Run Code Online (Sandbox Code Playgroud)
用于填充缺失值
tspd['metadata'].replace(np.nan,{}) # does nothing
tspd['metadata'].fillna({}) # likewise does nothing
tspd.loc[tspd['metadata'].isna(), 'metadata'] = {} # error
tspd['metadata'] = tspd['metadata'].where(~tspd['metadata'].isna(), other={}) # this sets the NaN values to <built-in method values of dict object>
Run Code Online (Sandbox Code Playgroud)
所以添加列有效,但有点难看。在没有一些(慢)循环的情况下替换值似乎是不可能的。