我有一个称为预测变量的5D数组,其形状为[6,288,37,90,107]
,其中6
是变量的数量,
288
是这些变量的时间序列,
37
是k个位置,
90
是j个位置,
107
是我的位置
我希望pandas dataframe
包含每个k,j,i
位置的每个变量时间序列的列,这样当然会有很多列。
然后我想以某种方式获取每列的名称
例如,第一列是var1_k_j_i = predictors[0,:,0,0,0]
除了名称我实际上想要k location
,j location
,
和i location
代替k_j_i
既然有这么多我不能手工做到这一点所以我希望有关于将这个组织成熊猫数据框并获取名称的最佳方法的建议?可能是一个循环?
总而言之,在此结束时,我希望我的5D预测变量数组变成一个大型的pandas数据帧,其中每列是位于不同k,j,i位置的变量,其中包含变量和位置的相应名称数据框的标题或第一行。
答案 0 :(得分:1)
声音就像你需要在这里重塑一样好玩。
为了解决位置i,j,k很容易使用重塑。然后我不确定你是否可以再次重塑以获得你需要的2D表示,所以我为你提出一个循环如下。
import itertools
import pandas as pd
dfs = []
new_matrix = matrix.reshape([6,288,37*90*107])
for var range(6):
iterator = itertools.product(range(37), range(90), range(107))
columns = ['var%i_' % var + '_'.join(map(str, x)) for x in iterator]
dfs.append(pd.DataFrame(new_matrix[var]))
result = pd.concat(dfs)