Комбинирование комментария @ Eike's и комментария @ JohnSalvatier кажется довольно Pandasonic :
>>> import pandas as pd
>>> np = pandas.np
>>> point = {'x': np.array(-0.47652306228698005),
... 'y': np.array([[-0.41809043],
... [ 0.48407823]])}
>>> points = 10 * [point] # this creates a list of 10 point dicts
>>> df = pd.DataFrame().append(points)
>>> df.x
# 0 -0.476523062287
# ...
# 9 -0.476523062287
# Name: x, dtype: object
>>> df.y
# 0 [[-0.41809043], [0.48407823]]
# ...
# 9 [[-0.41809043], [0.48407823]]
# Name: y, dtype: object
>>> df.y[0]
# array([[-0.41809043],
# [ 0.48407823]])
>>> df.y[0].shape
# (2, 1)
Чтобы построить (и сделать все остальные интересные 2- D Pandas) вам все равно придется вручную преобразовать столбец массивов обратно в DataFrame:
>>> dfy = pd.DataFrame([row.T[0] for row in df2.y])
>>> dfy += np.matrix([[0] * 10, range(10)]).T
>>> dfy *= np.matrix([range(10), range(10)]).T
>>> dfy.plot()
Чтобы сохранить это на диске, используйте to_pickle
:
>>> df.to_pickle('/tmp/sotest.pickle')
>>> df2 = pd.read_pickle('/tmp/sotest.pickle')
>>> df.y[0].shape
# (2, 1)
Если вы используете to_csv
, ваши np.array
s станут строками:
>>> df.to_csv('/tmp/sotest.csv')
>>> df2 = pd.DataFrame.from_csv('/tmp/sotest.csv')
>>> df2.y[0]
# '[[-0.41809043]\n [ 0.48407823]]'