You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将二维Tensor转为单列DataFrame,每行保留完整Tensor

解决方法

要实现将二维Tensor转为单列DataFrame且每行保留完整Tensor,核心是让pandas把每行Tensor识别为单个元素而非拆分。这里有两种简单可行的方式:

方法1:使用torch.unbind拆分行

torch.unbind会把Tensor按指定维度拆分,默认按第0维度(行)拆分,返回每行Tensor的迭代器,将其转为列表后传入DataFrame即可:

import torch
import pandas as pd

x = torch.rand(4,3)
# 拆分每行并转为列表
row_tensors = list(torch.unbind(x))
# 构造单列DataFrame
df = pd.DataFrame(row_tensors, columns=['tensor_column'])

print(df.shape)  # 输出 (4, 1)
print(df)

输出示例:

tensor_column
0  tensor([0.8888, 0.8168, 0.2737])
1  tensor([0.9429, 0.0847, 0.6115])
2  tensor([0.3147, 0.5715, 0.9937])
3  tensor([0.5592, 0.7696, 0.3094])

方法2:列表推导式遍历行

直接遍历二维Tensor的每行,将每行Tensor收集为列表后构造DataFrame:

import torch
import pandas as pd

x = torch.rand(4,3)
# 遍历每行生成列表
row_list = [row for row in x]
df = pd.DataFrame(row_list, columns=['tensor_column'])

print(df.shape)  # 输出 (4, 1)

为什么之前的方法会失败?

如果直接用pd.DataFrame(x)或者转成numpy数组后传入,pandas会默认把Tensor/数组的每个元素当作单独的列,所以会生成4行3列的DataFrame。而上面的方法是把每行Tensor作为单个元素存入列表,pandas就会将其识别为单列的每行数据。

内容的提问来源于stack exchange,提问作者Max Uglov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 19:22:05