我有一个Pandas DataFrame,结构如下,包含数字和固定形状的numpy数组:
import pandas as pd
import numpy as np
df = pd.DataFrame({"num":(23, 42), "list":(np.arange(3), np.arange(1,4))
假设我想要快速存储和检索大量(超过1 GB)的数据,我应该如何存储它?如果我使用HDF5,Numpy数组会被腌制,这将影响快速检索数据的能力。有没有办法告诉HDF5如何存储Numpy数组?或者,我根本不应该使用HDF5吗?
以下GitHub线程似乎建议如下:
答案 0 :(得分:3)
我的意思是这样的:
df_x = pd.concat([df.num, pd.DataFrame(np.vstack(df.list))],
keys=["key", "arr"], axis=1)
数据框:
key arr
num 0 1 2
0 23 0 1 2
1 42 1 2 3
转换回:
pd.concat([df_x.key, pd.Series(tuple(df_x.arr.values), name='list')], axis=1)
num list
0 23 [0, 1, 2]
1 42 [1, 2, 3]