我有一个由结构体组成的二维NumPy数组:
arr = np.zeros((3,5), [('x',int), ('y',float)])
即:
array([[(0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0)],
[(0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0)],
[(0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0)]],
dtype=[('x', '<i8'), ('y', '<f8')])
我想从中创建一个Pandas Panel。我尝试了显而易见的方法:
pd.Panel(arr)
数值错误:所需维度数为3,但给定的ndarray的维度数为2
然后我发现了这堆丑陋的代码:
pd.Panel(dict(enumerate(pd.DataFrame(a) for a in arr)))
它会产生:
<class 'pandas.core.panel.Panel'>
Dimensions: 3 (items) x 5 (major_axis) x 2 (minor_axis)
Items axis: 0 to 2
Major_axis axis: 0 to 4
Minor_axis axis: x to y
这种方式“能用”,但效率低下,且不美观。
那么如何构建这样的面板呢?
编辑:我在此提交了一个问题:https://github.com/pandas-dev/pandas/issues/14511
pd.Panel(arr.reshape((1, arr.shape[0], arr.shape[1])))
还是pd.Panel(arr.reshape((arr.shape[0], arr.shape[1], 1)))
? - EdChumarr
的数据!我将更新问题以显示丑陋堆栈的结果。 - John Zwinck