Jos*_*xas 11 python pickle pandas
我有一个带有500,000行的数据帧"DF".以下是每列的数据类型:
ID int64
time datetime64[ns]
data object
Run Code Online (Sandbox Code Playgroud)
"data"列中的每个条目都是一个size = [5,500]的数组
当我尝试使用保存此数据帧时
DF.to_pickle("my_filename.pkl")
Run Code Online (Sandbox Code Playgroud)
它给我返回了以下错误:
12 """
13 with open(path, 'wb') as f:
---> 14 pkl.dump(obj, f, protocol=pkl.HIGHEST_PROTOCOL)
OSError: [Errno 22] Invalid argument
Run Code Online (Sandbox Code Playgroud)
我也尝试这种方法,但我得到同样的错误:
import pickle
with open('my_filename.pkl', 'wb') as f:
pickle.dump(DF, f)
Run Code Online (Sandbox Code Playgroud)
我尝试保存此数据帧的10行:
DF.head(10).to_pickle('test_save.pkl')
Run Code Online (Sandbox Code Playgroud)
而且我没有任何错误.因此,它可以节省小DF而不是大DF.
我在Mac上使用python 3,ipython notebook 3.
请帮我解决这个问题.我真的需要将这个DF保存到pickle文件中.我无法在互联网上找到解决方案.
vol*_*myr 12
直到在pickle/pandas方面的某个地方有一个修复,我会说更好的选择是使用替代的IO后端.HDF适用于大型数据集(GB).因此您无需添加其他拆分/组合逻辑.
df.to_hdf('my_filename.hdf','mydata',mode='w')
df = pd.read_hdf('my_filename.hdf','mydata')
Run Code Online (Sandbox Code Playgroud)
小智 4
可能不是你所希望的答案,但这就是我所做的......
使用 np.array_split 将数据帧分割成更小的块(虽然不能保证 numpy 函数能够工作,但现在它可以工作,尽管它曾经存在一个错误)。
然后pickle较小的数据帧。
当您取消它们时,请使用 pandas.append 或 pandas.concat 将所有内容重新粘合在一起。
我同意这是一种捏造,而且不是最理想的。如果有人可以提出一个“正确”的答案,我会有兴趣看到它,但我认为这很简单,因为数据帧不应该超过一定的大小。
| 归档时间: |
|
| 查看次数: |
8644 次 |
| 最近记录: |