How to transform a 3d arrays into a dataframe in python

后端 未结 3 1084
再見小時候
再見小時候 2021-01-05 12:21

I have a 3d arrays as follows:

ThreeD_Arrays = np.random.randint(0, 1000, (5, 4, 3))

array([[[715, 226, 632],
        [305,  97, 534],
        [ 88, 592, 90         


        
3条回答
  •  悲哀的现实
    2021-01-05 12:28

    Based on the answer to this question, we can use a MultiIndex. First, create the MultiIndex and a flattened DataFrame.

    A = np.random.randint(0, 1000, (5, 4, 3))
    
    names = ['x', 'y', 'z']
    index = pd.MultiIndex.from_product([range(s)for s in A.shape], names=names)
    df = pd.DataFrame({'A': A.flatten()}, index=index)['A']
    

    Now we can reshape it however we like:

    df = df.unstack(level='x').swaplevel().sort_index()
    df.columns = ['A', 'B', 'C']
    df.index.names = ['DATE', 'i']
    

    This is the result:

              A    B    C
    DATE i           
    0    0  715  226  632
         1  895  837  431
         2  520  692  230
         3  286  358  462
         4   44  119  757
    1    0  305   97  534
         1  649  717   39
         2  452  816  887
         3  831   26  332
         4  908  937  728
    2    0   88  592  902
         1  363  121  274
         2  688  509  770
         3  424  178  642
         4  809   28  442
    3    0  172  932  263
         1  334  359  816
         2  290  856  584
         3  955   42  938
         4  832  220  348
    

提交回复
热议问题