繁体   English   中英

Python 3: Numpy 3d array to Pandas dataframe with 1st dimension values as columns and rows/cols position paired in one column

[英]Python 3: Numpy 3d array to Pandas dataframe with 1st dimension values as columns and rows/cols position paired in one column

正如长标题提示的那样,我有一个形状为 [n,m,z] 的数组,我想把它变成一个 Pandas dataframe 第一列是行和列 Z4757FE07FD492A8 和 60EA6A760D63 维度的数组13 列是从第一个维度开始的值,导致 (m*z)Xn 的 DataFrame。 我一直在阅读其他示例,但我没有找到任何将一维旋转到列的示例。

例如,对于形状为 [3,2,4] 的数组

import numpy as np
import pandas as pd

rand_int = np.random.randint(10,90,(3,2,4))
print(rand_int)

[[[57 76 30 34]
  [21 70 10 51]]

 [[73 67 55 51]
  [78 38 50 76]]

 [[89 58 47 35]
  [45 11 61 18]]]

我希望它返回为

Pair   Col1   Col2   Col3
[0,0]   57    73      89
[0,1]   76    67      58
[0,2]   30    55      47
...
[1,3]   51    76      18

任何人都可以帮忙吗?

我可以循环mz维度来检索值。

import numpy as np
import pandas as pd

n = 3
m = 2
z = 4

rand_int = np.random.randint(10, 90, (n,m,z))

datas = [[[57, 76, 30, 34],
          [21, 70, 10, 51]],
         [[73, 67, 55, 51],
          [78, 38, 50, 76]],
         [[89, 58, 47, 35],
          [45, 11, 61, 18]]]

res = []

for i in range(m):
    for j in range(z):
        res.append([[i, j]] + [data[i][j] for data in datas])

df = pd.DataFrame(res, columns=['Pair', 'Col1', 'Col2', 'Col3'])
print(df)

     Pair  Col1  Col2  Col3
0  [0, 0]    57    73    89
1  [0, 1]    76    67    58
2  [0, 2]    30    55    47
3  [0, 3]    34    51    35
4  [1, 0]    21    78    45
5  [1, 1]    70    38    11
6  [1, 2]    10    50    61
7  [1, 3]    51    76    18

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM