【问题标题】:How to convert a list of pandas dataframes into a 3d numpy array?如何将熊猫数据框列表转换为 3d numpy 数组?
【发布时间】:2018-12-14 21:50:19
【问题描述】:

如果我有一个pd.DataFrame 的列表,如下所示:

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

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

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

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

【问题讨论】:

  • np.stack(df_list)?
  • 你是天才... :) 谢谢!这非常有效。
  • @Divakar 添加该评论作为答案并帮助 OP 关闭此评论? :)

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    使用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 中重新排序会更容易调试。

    【讨论】:

      猜你喜欢
      • 2020-07-15
      • 1970-01-01
      • 2015-06-11
      • 2023-03-30
      • 2021-12-20
      • 2018-05-03
      • 2019-10-12
      • 2022-01-19
      • 2017-08-26
      相关资源
      最近更新 更多