我有两个不同的 Jupyter 笔记本用于两个不同的项目。我想将它们合并到同一个笔记本上。
一种方法是将单元格从一个单元格复制到另一个单元格,但对于包含许多单元格的项目来说,这似乎是一项相当大的工作。有支持导入Notebook文档或者一次复制多个单元格的功能吗?
您可以使用 nbmerge
合并笔记本使用pip安装
pip install nbmerge
并将您的文件与
合并nbmerge file_1.ipynb file_2.ipynb file_3.ipynb > merged.ipynb
pip install nbmerge
nbmerge file_1.ipynb file_2.ipynb file_3.ipynb > merged.ipynb
您确实可以一次复制多个单元格 - 使用 Shift + J 或 Shift + Down 向下选择下一个单元格,并使用 Shift + K 或 Shift + Up 向上选择下一个单元格。然后,您可以将它们批量复制并粘贴到另一个笔记本,并通过确保目标笔记本处于命令模式(单元格具有蓝色边框)来保留单元格分裂。
请参阅 http://jupyter-notebook.readthedocs.io/en/stable/examples/Notebook/Notebook%20Basics.html# 和 https://www.dataquest.io/blog/jupyter-notebook-tips-技巧-快捷方式/.
安装 nbmerge:
pip install nbmerge
运行以下命令:
!nbmerge file_1.ipynb file_2.ipynb file_3.ipynb > merged.ipynb
为那些错过惊呼的人解答
确保要合并的所有笔记本都位于同一文件夹/目录中,并将这些代码放入新的 jupyter 单元格中(请不要忘记感叹号)
!nbmerge file_1.ipynb file_2.ipynb file_3.ipynb > merged_ouput.ipynb
我过去曾在 .ipynb 文件上使用文本编辑器做过几次这样的事情。这是一种相当容易理解的 json 格式。我的用例是将一系列单元移动到另一个笔记本中,或多或少作为存档活动。
确保您有适当的备份策略,以防您因遗漏逗号或类似内容而破坏 json 格式!
您最终会得到无效的校验和,当您第一次打开更改的笔记本时,系统会向您发出警告。第一次保存后,会创建一个新的校验和,警告就会消失。
将笔记本的部分内容复制/粘贴到另一个笔记本中是Jupytext的一个用例。 Jupytext 可以将笔记本(输入)导出为
.py
或 .md
文件。执行任一
jupytext --set-formats ipynb,py --sync *.ipynb
或
jupytext --set-formats ipynb,md --sync *.ipynb
然后编辑文本文件,将所需的输入从一个文件移动到另一个文件,并使用
更新相应的
.ipynb
文件
jupytext --sync *.ipynb
请注意,此操作中仅保留输入未更改的输出。
Jupytext 也可以作为 Jupyter 的插件使用。在这种情况下,您不需要使用命令行。您可以使用文件/Jupytext 菜单(Jupyter Notebook)或 Jupytext 命令(Jupyter Lab)将笔记本与所需的文本文件“配对”。您只需在浏览器中刷新配对笔记本即可获取配对文本文件的最新编辑内容。
在新的 Jupyter Notebook 中,运行以下命令:
pip install nbmerge
.
然后,重新启动您的内核。最后,运行这个:
!nbmerge your_first_file.ipynb your_second_file.ipynb your_third_file.ipynb -o merged.ipynb
检查目录中是否有新创建的合并文件(merged.ipynb
)
然后输入以下内容:
刚刚弄清楚为什么本节中的某些人会出错。 我正在使用 Jupitar Notebooks 运行 Virtual Studio with Python 3。似乎 nbmerge 调用了一个名为 nbformat 的类,该类在我的计算机上不存在。使用 pip 安装解决了我的问题。我在与 python 文件相同的目录中完成了所有这些操作。
参考:
https://github.com/jbn/nbmerge/blob/master/nbmerge/__init__.py