Examples of how store a multidimensional matrix in a dataframe with pandas:
Table of contents
Create a 3D matrix with numpy
Let's consider the following 3D matrix with indexes i,j,k created with numpy
import numpy as np
data = np.random.randint(100,size=(3,3,3))
print(data)
gives for example
[[[63 35 74]
[28 69 48]
[25 19 33]]
[[51 23 28]
[40 76 0]
[10 48 82]]
[[51 55 7]
[12 26 91]
[ 1 73 31]]]
Note: to get the value coressponding to i = 1, j = 2 and k = 0, a solution is to do:
print(data[1,1,0])
returns here for instance
40
Store matrix in a dataframe
A solution to store a multidimensional matrix in a dataframe is to first reshape the initial matrix to a 2D matrix:
data = data.reshape(9,3)
print(data)
gives
[[63 35 74]
[28 69 48]
[25 19 33]
[51 23 28]
[40 76 0]
[10 48 82]
[51 55 7]
[12 26 91]
[ 1 73 31]]
and to use pandas MultiIndex:
import pandas as pd
iterables = [[0,1,2], [0,1,2]]
index = pd.MultiIndex.from_product(iterables, names=['i', "j"])
df = pd.DataFrame(data=data, index=index, columns = [0,1,2])
df = df.rename_axis("k", axis="columns")
print(df)
returns then
k 0 1 2
i j
0 0 63 35 74
1 28 69 48
2 25 19 33
1 0 51 23 28
1 40 76 0
2 10 48 82
2 0 51 55 7
1 12 26 91
2 1 73 31