python - 将 5D 数组转换为 Pandas 数据框的最有效方法

标签 python loops pandas dataframe

我有一个名为预测变量的 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/

相关文章:

python - Pandas 合并和组连接

python - 数据集形状不匹配 Conv1D 输入层

python - 我可以在删除每个组中的第一个和最后一个条目的同时使用 Pandas group by 吗?

python - setuptools - 从相对路径从框架 bundle

python - 如何自动调整文本大小以适应固定大小的 PyGTK 标签?

java - 如何检索字符串中某个值之后的所有记录

python - 如何连接 pandas 中的 DatetimeIndex 对象?

python - 如何确定 matplotlib 条形图中条形的顺序

ios - 如果我在代码上添加这个函数,NSTimer 停止,为什么?

java - 查找非重复元素。代码不打印任何内容