我正在尝试将一个panda Dataframe pickle到我的本地目录中,这样我就可以在另一个jupyter笔记本上工作了,刚开始写的时候看起来很成功,但是当我尝试在一个新的jupyter笔记本上读的时候,读不成功。
当我打开似乎是我写的pickle文件时,文件的唯一内容是:
错误!/Users/.../income. pickle不是UTF-8编码保存被禁用。有关详细信息,请参阅控制台。
我也检查了,泡菜文件本身只有几千字节。
下面是我编写pickle的代码:
with open('income.pickle', 'wb', encoding='UTF-8') as to_write:
pickle.dump(new_income_df, to_write)
下面是我的代码:
with open('income.pickle', 'rb') as read_file:
income_df = pickle.load(read_file)
同样,当我返回income_df时,会得到以下输出:
系列([],数据类型:浮动64)
这是一个空序列,当我试图调用它的大多数序列方法时,我会出错。
如果有人知道解决这个问题的方法,我洗耳恭听。提前感谢!
编辑:
这是我得出的解决方案:
with open('cleaned_df', 'wb') as to_write:
pickle.dump(df, to_write)
with open('cleaned_df','rb') as read_file:
df = pickle.load(read_file)
这比我想象的要简单得多
1条答案
按热度按时间0h4hbjxa1#
Pickling通常用于存储原始数据,而不是传递Pandas DataFrame对象。当您尝试pickle它时,它将只存储顶层模块名称,在本例中为Series。
1)只能将数据框中的数据写入csv文件。
2)如果你的数据可以保存为一个名为 *.py的常规python模块中的函数,你可以从Jupyter笔记本中调用它。你也可以在改变函数中的值后重新加载函数。https://ipython.org/ipython-doc/3/config/extensions/autoreload.html
3)您可以使用**%store命令**在Jupyter笔记本电脑之间共享数据。
参见源代码:https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/
和:Share data between IPython Notebooks