将二维 DataFrame 列表转换为 Torch 张量

Convert list of two dimensional DataFrame to Torch Tensor

目标: 我在 PyTorch 中使用 RNN,我的数据由 DataFrame 列表给出,其中每个 DataFrame 表示一个观察结果,例如:

import numpy as np
data = [pd.DataFrame(np.zeros((5,50))) for x in range(100)]

这意味着 100 个观察值,每个参数有 50 个参数和 5 个时间步长。对于我的模型,我需要一个形状为 (100,5,50) 的张量。

问题:我尝试了很多方法,但似乎没有任何效果,有人知道这是怎么做到的吗? 这种方法不起作用:

import torch
torch.tensor(np.array(data))

我认为问题是同时将 DataFrames 转换为 Arrays 并将 List 转换为 Tensor。

我认为您不能在单个命令中转换数据帧列表,但您可以将数据帧列表转换为张量列表,然后连接列表。

例如

import pandas as pd
import numpy as np
import torch

data = [pd.DataFrame(np.zeros((5,50))) for x in range(100)]

list_of_arrays = [np.array(df) for df in data]
torch.tensor(np.stack(list_of_arrays))

#or

list_of_tensors = [torch.tensor(np.array(df)) for df in data]
torch.stack(list_of_tensors)

太晚了,但如果有人还在某处问这个问题...这是给你的<3

import torch
import numpy as np
list_of_dataframe : List[pd.DataFrame] #= ....
my_tensor = torch.tensor(np.array(list_of_dataframe))

(python 3.9,numpy 1.20,pytorch 1.10)