我有一个称为预测变量的5D数组,其形状为[6,288,37,90,107],其中6是变量的数量,
288是这些变量的时间序列,
37是k个位置,
90是j个位置,
107是第i个位置。
 我想有一个pandas dataframe,其中每个k,j,i位置都包含每个可变时间序列的列,因此当然会有很多列。
然后,我想以某种方式获取每一列的名称。
例如,第一列为var1_k_j_i = predictors[0,:,0,0,0]
除了我实际上想要的名称k locationj location
i location而不是k_j_i
既然有很多我无法手工完成,所以我希望对将其组织成熊猫数据框并获取名称的最佳方法提出建议。可能是循环?

因此,总而言之,我希望将我的5D预测变量数组转换成一个大熊猫数据框,其中每列都是位于不同k,j,i位置的变量,并且该变量的相应名称和位置位于标头或数据框的第一行。

最佳答案

听起来好像您需要在这里重塑乐趣。

确定位置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)

关于python - 将5D数组转换为Pandas数据帧的最有效方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42443503/

10-12 21:45
查看更多