【问题标题】:Convert Dataframe into (first panel of) 3D array将 Dataframe 转换为(第一个面板)3D 数组
【发布时间】:2021-12-30 15:59:01
【问题描述】:

我有以下名为 df1 的数据框:

A B
0 5 10
1 15 20
2 25 30

现在,假设我还有以下空白 3D 数组(现在仅作为占位符创建):

array1 = np.zeros((10,3,2))

df1 具有相同的行数和列数,如何将array1 中的第一个“面板”(十个“面板”)替换为df1

【问题讨论】:

    标签: python arrays pandas dataframe numpy


    【解决方案1】:

    您可以直接将DataFrame分配给第一个“面板”:

    array1[0] = df
    
    print(array1)
    # Output:
    [[[ 5. 10.]
      [15. 20.]
      [25. 30.]]
    
     [[ 0.  0.]
      [ 0.  0.]
      [ 0.  0.]]
    
     [[ 0.  0.]
      [ 0.  0.]
      [ 0.  0.]]
    # ...followed by 7 more identical 3x2 zero matrices
    

    出于习惯,我首先尝试了array1[0, :, :] = df.to_numpy(),据我所知,它给出了相同的结果,但其意图更明确。

    【讨论】:

      【解决方案2】:

      试试这个:

      array1[0] = df1
      

      输出:

      >>> array1
      array([[[ 5., 10.],
              [15., 20.],
              [25., 30.]],
      
             [[ 0.,  0.],
              [ 0.,  0.],
              [ 0.,  0.]],
      
              ...
      
             [[ 0.,  0.],
              [ 0.,  0.],
              [ 0.,  0.]]])
      

      【讨论】:

        【解决方案3】:

        你可以像提到的richardec一样直接分配

        array1[0] = df1
        

        你也可以试试这个来了解内部发生了什么

        array=np.array(df)
        array1[0]=array
        

        两种情况下的输出相同

        array([[[ 5., 10.],
                [15., 20.],
                [25., 30.]],
        
               [[ 0.,  0.],
                [ 0.,  0.],
                [ 0.,  0.]],
        
               [[ 0.,  0.],
                [ 0.,  0.],
                [ 0.,  0.]],
        
               [[ 0.,  0.],
                [ 0.,  0.],
                [ 0.,  0.]],
        
               [[ 0.,  0.],
                [ 0.,  0.],
                [ 0.,  0.]],
        
               [[ 0.,  0.],
                [ 0.,  0.],
                [ 0.,  0.]],
        
               [[ 0.,  0.],
                [ 0.,  0.],
                [ 0.,  0.]],
        
               [[ 0.,  0.],
                [ 0.,  0.],
                [ 0.,  0.]],
        
               [[ 0.,  0.],
                [ 0.,  0.],
                [ 0.,  0.]],
        
               [[ 0.,  0.],
                [ 0.,  0.],
                [ 0.,  0.]]])
        

        【讨论】:

        • 另外,array=np.array(df)df.to_numpy() 相同
        • 我在回答这个问题时并没有完全理解你的答案,但你想出了简单而紧凑的解决方案。
        猜你喜欢
        • 1970-01-01
        • 2023-03-22
        • 2016-07-30
        • 1970-01-01
        • 2021-05-01
        • 2021-11-29
        • 2016-06-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多