如果我有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
答案 0 :(得分:0)
您应该将DataFrame转换为numpy数组,然后将其转换为3D数组。 像这样:
np.array([np.array(df), np.array(df)])
答案 1 :(得分:0)
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中对其重新排序将更加容易调试。