我有一个dict包含几个pandas Dataframe(由键标识),任何有效序列化(并干净地加载)它的建议。这是结构(pprint显示输出)。每个dict ['method_x _'] ['meas_x_']都是一个pandas Dataframe。目标是保存数据框,以便使用一些特定的绘图选项进行进一步的绘图。
{'method1':
{'meas1':
config1 config2 0 0.193647 0.204673 1 0.251833 0.284560 2 0.227573 0.220327,
'meas2':
config1 config2 0 0.172787 0.147287 1 0.061560 0.094000 2 0.045133 0.034760,
'method2':
{'meas1':
congif1 config2 0 0.193647 0.204673 1 0.251833 0.284560 2 0.227573 0.220327,
'MEAS2':
config1 config2 0 0.172787 0.147287 1 0.061560 0.094000 2 0.045133 0.034760}}
答案 0 :(得分:3)
使用pickle.dump(s) and pickle.load(s)。它确实有效。 Pandas DataFrames也有自己的方法df.save(“filename”),可用于序列化单个DataFrame ......
答案 1 :(得分:0)
在我的特定用例中,我尝试做一个简单的pickle.dump(all_df, open("all_df.p","wb"))
在正确加载了all_df = pickle.load(open("all_df.p","rb"))
重新启动木星环境时,我会得到UnpicklingError: invalid load key, '\xef'.
here中描述的一种方法指出,我们可以使用HDF5 (pytables)来完成这项工作。从他们的文档中:
HDFStore是一个类似dict的对象,可以读写熊猫
但是您使用的tables
版本似乎有些挑剔。 pip install --upgrade tables
之后,我开始工作并重新启动运行时。
如果您需要有关如何使用它的总体思路:
#consider all_df as a list of dataframes
with pd.HDFStore('df_store.h5') as df_store:
for i in all_df.keys():
df_store[i] = all_df[i]
您应该有一个df_store.h5
文件,可以使用相反的过程将其转换回去:
new_all_df = dict()
with pd.HDFStore('df_store.h5') as df_store:
for i in df_store.keys():
new_all_df[i] = df_store[i]