我有一个名为预测变量的 5D 数组,其形状为 [6,288,37,90,107]
,其中 6
是变量的数量,
288
是这些变量的时间序列,
37
是 k 个位置,
90
是 j 个位置,
107
是第 i 个位置。
我想要一个 pandas 数据框
,其中包含每个 k,j,i
位置处每个变量时间序列的列,因此当然会有很多列。
然后我想以某种方式获取每列的名称。
例如,第一列为 var1_k_j_i = Predictors[0,:,0,0,0]
除了名称之外,我实际上想要 k 位置
、j 位置
、
和i location
而不是k_j_i
。
由于有这么多我无法手动完成此操作,因此我希望获得有关将其组织到 pandas 数据框并获取名称的最佳方法的建议?可能是循环?
总之,在本文结束时,我希望我的 5D 预测数组变成一个大的 pandas 数据框,其中每一列都是位于不同 k、j、i 位置的变量,并具有相应的变量名称和位置数据框的标题或第一行。
最佳答案
听起来你需要在这里享受 reshape 的乐趣。
要解决位置 i,j,k 的问题,就像使用 reshape 一样简单。然后我不确定您是否可以再次 reshape 以获得所需的 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/