如何将熊猫数据帧列表转换为3d numpy数组?

时间:2018-12-14 21:50:20

标签: python python-3.x pandas numpy multidimensional-array

如果我有pd.DataFrame的列表,例如:

df = pd.DataFrame(np.random.rand(4,5), columns = list('abcde'))
df_list = [df, df]

问题: 如何使用np.array(2、3、5)将其转换为3D shape

我尝试做np.array(df_lsit),但出现以下错误:

ValueError: cannot copy sequence with size 4 to array axis with dimension 5

2 个答案:

答案 0 :(得分:0)

您应该将DataFrame转换为numpy数组,然后将其转换为3D数组。 像这样:

np.array([np.array(df), np.array(df)])

答案 1 :(得分:0)

使用map()df.to_numpy()

df = pd.DataFrame(np.random.rand(4,5), columns = list('abcde'))
df_list = [df, df]

np_array = np.array(list(map(lambda x: x.to_numpy(), df_list)))

# to make sure the shape of np_array is correct
np_array = np_array.reshape((x, y, z))

第Z个维度中的列顺序将与熊猫DataFrame中的列顺序相同。因此,如果您希望按特定顺序排列列,则需要在运行df.to_numpy()之前记录这些列。

当然,您可以以NumPy形式记录这些列,但是在pandas DataFrame中对其重新排序将更加容易调试。