代码之家  ›  专栏  ›  技术社区  ›  Newskooler

如何将数据帧列表转换为三维numpy数组?

  •  1
  • Newskooler  · 技术社区  · 6 年前

    pd.DataFrame 像这样:

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

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

    np.array(df_lsit) ,但出现以下错误:

    ValueError: cannot copy sequence with size 4 to array axis with dimension 5
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Aliakbar Saleh    6 年前

    您应该将数据帧转换为numpy数组,然后将其转换为3D数组。

    np.array([np.array(df), np.array(df)])
    
        2
  •  0
  •   William Wang    4 年前

    使用 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维度中的列顺序将与数据帧中的列顺序相同。因此,如果您需要列的特定顺序,则需要在运行之前录制这些列df.至\u numpy().

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