创建3D熊猫数据框

时间:2018-10-29 15:20:43

标签: python pandas dataframe

我有这个result,它是ndarray的列表。我正在尝试在循环中创建3d熊猫数据框,如下所示:

col_names = list()
col_names += [('var%d(t)' % (j + 1)) for j in range(138)]
for b in range(0, B):
    result = get_new_results()
    df1 = pd.DataFrame(data=result, columns=col_names)
    df = pd.concat([df, df1], axis=0)

但是这会将每个结果添加为df末尾的新行。因此,如果每个result是形状为(138,)的112个ndarray,类似于尺寸为112x138的表,则df的4次迭代后,我的b将具有shape =(448,138) (448 = 112 * 4)。行索引将从0变为111,然后再次从0变为112。df.ndim等于2。但是我需要创建一个3d数据帧,如下所示:

0  var1(t)     -0.863838, ... # 112 different values for var1(t)
   var2(t)      0.299368, ... # 112 different values for var2(t)
   ...           ...
   var137(t)    0.299368, ... # 112 different values for var137(t)

1  var1(t)      0.206053, ... # 112 different values for var1(t)
   var2(t)      1.063327, ... # 112 different values for var2(t)
   ...           ...
   var137(t)    0.299368, ... # 112 different values for var137(t)

2  var1(t)     -2.213588, ... # 112 different values for var1(t)
   var2(t)     -0.251905, ... # 112 different values for var2(t)
   ...           ...
   var137(t)    0.299368, ... # 112 different values for var137(t)
...

B  var1(t)    0.408204, ... # 112 different values for var1(t)
   var2(t)    1.266143, ... # 112 different values for var2(t)
   ...           ...
   var137(t)    0.299368, ... # 112 different values for var137(t)

我相信我可以使用pd.MultiIndex来创建它,但是我无法提出一个合理的解决方案。有人可以帮我解决吗?

1 个答案:

答案 0 :(得分:0)

这是我设法创建数据框的方法:

frames = []
col_names = list()
col_names += [('var%d(t)' % (j+1)) for j in range(138)]
for i in range(0, B):
    result = get_new_results()
    df_tmp = pd.DataFrame(data=results, columns=col_names)
    frames.append(df_tmp)
df = pd.concat(frames, axis=0, keys=range(0, 112))