pandasで4次元配列を管理したい．


タイトルどおりです．  
L次元のベクトルxがi,j,kをパラメータにして生成させるとき，  
列にXベクトルの成分をならべ，インデックスをi,j,kの組み合わせで表示したいです．  
以下のような生成過程のデータをうまく管理したいです．

[code]

    for i range (I)
     for j range (J)
      for k range (K)
        for l range (L)
         x[i,j,k,l] = fanc(i,j,k)
    
[/code]




やりたいことは、こんな感じでしょうか？

[code]

    import pandas as pd
    I,J,K,L = 3,3,3,5
    
    # Indexは range(I),range(J),range(K) の組み合わせ
    idx = pd.MultiIndex.from_product([range(I),range(J),range(K)])
    # Columnは range(L)
    col = range(L)
    # DataFrameの生成
    df = pd.DataFrame(index=idx, columns=col)
    
    # 何かしらの計算式
    def func(i,j,k,l):
        return i+j+k+l # ←とりあえず適当に定義
    
    # 行毎に上記の計算式を適用して各セルを埋める
    df = df.apply(lambda row: [func(*row.name, x) for x in row.index], axis=1)
    
    print(df)
    #       0  1  2  3   4
    #0 0 0  0  1  2  3   4
    #    1  1  2  3  4   5
    #    2  2  3  4  5   6
    #  1 0  1  2  3  4   5
    #    1  2  3  4  5   6
    #    2  3  4  5  6   7
    #  2 0  2  3  4  5   6
    #    1  3  4  5  6   7
    #    2  4  5  6  7   8
    #1 0 0  1  2  3  4   5
    #    1  2  3  4  5   6
    #    2  3  4  5  6   7
    #  1 0  2  3  4  5   6
    #    1  3  4  5  6   7
    #    2  4  5  6  7   8
    #  2 0  3  4  5  6   7
    #    1  4  5  6  7   8
    #    2  5  6  7  8   9
    #2 0 0  2  3  4  5   6
    #    1  3  4  5  6   7
    #    2  4  5  6  7   8
    #  1 0  3  4  5  6   7
    #    1  4  5  6  7   8
    #    2  5  6  7  8   9
    #  2 0  4  5  6  7   8
    #    1  5  6  7  8   9
    #    2  6  7  8  9  10
    
[/code]

