将 pandas 数据帧转换为 pytorch 张量

问题描述 投票:0回答:1

我正在尝试将从 CSV 文件读取的 pandas 数据帧转换为 pytorch 张量,但出现类型错误。

我尝试这样做:

    df = pandas.DataFrame({"spam": [1, 2, 3, 4], "eggs": [5, 6, 7, 8], "ham": [9, 10, 11, 12]})
    print(type(df))
    t = torch.from_numpy(df.values)

    dataframe = pandas.read_csv('dataset.csv')
    print(type(dataframe))
    tens = torch.from_numpy(dataframe.values)

这对于 df 来说非常有效,但对于 dataframe 会引发类型错误

TypeError: can't convert np.ndarray of type numpy.object_. The only supported types are: float64, float32, float16, complex64, complex128, int64, int32, int16, int8, uint8, and bool.

两种类型完全相同

<class 'pandas.core.frame.DataFrame'>

可能出了什么问题?

pandas pytorch typeerror tensor
1个回答
1
投票

当您的 DataFrame 包含非数字或混合类型时,通常会出现此问题。

.values
属性返回一个 NumPy 数组,但 PyTorch 需要特定类型。

  1. 检查 DataFrame dtypes:
    print(dataframe.dtypes)
    。确保全部都是数字。
  2. 转换非数字列:
    dataframe = dataframe.astype(float)
    或有选择地转换列。

尝试这样的事情:

# For specific columns
dataframe['some_column'] = dataframe['some_column'].astype(float)

# For all columns
dataframe = dataframe.astype(float)

# Then convert to tensor
tens = torch.from_numpy(dataframe.values)

确保转换对您的应用程序有意义。

© www.soinside.com 2019 - 2024. All rights reserved.