首页 > 解决方案 > 如何将熊猫数据框列表转换为 3d numpy 数组?

问题描述

如果我有这样的列表pd.DataFrame

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

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

我试图这样做np.array(df_lsit),但我收到以下错误:

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

标签: pythonpython-3.xpandasnumpymultidimensional-array

解决方案


使用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))

Zth 维度中的列顺序将与 pandas DataFrame 中的列顺序相同。因此,如果您需要特定的列顺序,则需要在运行 df.to_numpy() 之前记录这些列。

当然,你可以用 NumPy 的形式记录列,但是在 pandas DataFrame 中重新排序会更容易调试。


推荐阅读