繁体   English   中英

数据框的魔术存储命令如何工作?

[英]how does the magic store commands for dataframe work?

我分别在两个 jupyter 笔记本(N1 和 N2)中创建了两个数据帧(df1 和 df2)。

在第 1 天,我使用以下 store 命令在N2 jupyter notebook 中使用df1及其变量

%store -r df1

但是在第 25 天,我创建了一个新的 jupyter notebook N3并再次使用以下 store 命令

%store -r df1

它似乎很容易地将数据帧df1所有细节都轻松地拉入N3 jupyter notebook 中?

这是如何运作的?

它们不是仅对特定的 jupyter 笔记本会话有效吗?

那么,我们可以不将所有数据帧存储为文件,而是执行存储命令并随时轻松存储/检索它们吗?

%store魔法命令将变量存储在 IPython 的数据库中(它本质上是在后端使用 pickle 来存储),以便您稍后在不同的笔记本或会话中恢复它。

例如

>>> myvar = "store this string"
>>> %store myvar
Stored 'myvar' (str)
>>> %store
Stored variables and their in-db values:
myvar             -> 'store this string'

现在,您可以恢复此变量

>>> %store -r myvar
>>> myvar
'store this string'

Storemagic是 IPython 的一项功能,它“在 IPython 的数据库中存储变量、别名和宏”。 因为它是一个 IPython 功能,而不是 Jupyter 独有的,所以您可以在许多 IPython 和 Jupyter 会话中存储和恢复变量。

在我的环境 (IPython 7.19.0) 中,变量存储在目录中:

$HOME/.ipython/profile_default/db/autorestore

当使用%store <name>时,它们每个文件存储一个。 文件本身是存储变量的腌制表示。 您可以使用以下方法手动加载变量:

import pickle

# Name of the previously stored variable
stored_var = 'test'

# myvar will contain the variable previously stored with "%store test"
myvar_filename = get_ipython().ipython_dir + '/profile_default/db/autorestore/' + stored_var
with open(myvar_filename, 'rb') as f:
    myvar = pickle.load(f)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM