Expand/reshape Pandas 系列的列维度

Expand/reshape dimension of column of Pandas Series

我想将 pandas 系列从一维扩展到三维。下面 print(np.array(xs).shape) 给出了 (2,) 的输出,我希望 np.array(xs) 的形状为 (2,3,3),我该怎么办?

import pandas as pd
x = []
x.append(np.ones((3,3)))
x.append(np.zeros((3,3)))

xs = pd.Series(x)
print(np.array(xs).shape)

如有任何回复,我们将不胜感激!

注意:我知道 np.array(x) 会给我想要的输出和形状,但是我首先得到的是 xs。预期输出应为 print(np.array(x)),其形状为 (2,3,3).

array([[[ 1.,  1.,  1.],
        [ 1.,  1.,  1.],
        [ 1.,  1.,  1.]],

      [[ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.]]])

您可以将 Series 转换为数据帧,然后连接并转换为 numpy 数组。最后将它整形为你需要的形状。

pd.concat(xs.apply(pd.DataFrame).tolist()).values.reshape(2,3,3)
Out[1081]: 
array([[[ 1.,  1.,  1.],
        [ 1.,  1.,  1.],
        [ 1.,  1.,  1.]],

       [[ 0.,  0.,  0.],
        [ 0.,  0.,  0.],
        [ 0.,  0.,  0.]]])

您可以将 Series 转换为 list,然后再转换为 array

print (np.array(xs.tolist()))
[[[ 1.  1.  1.]
  [ 1.  1.  1.]
  [ 1.  1.  1.]]

 [[ 0.  0.  0.]
  [ 0.  0.  0.]
  [ 0.  0.  0.]]]

print (np.array(xs.tolist()).shape)
(2, 3, 3)