我正在尝试将从 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'>
可能出了什么问题?
当您的 DataFrame 包含非数字或混合类型时,通常会出现此问题。
.values
属性返回一个 NumPy 数组,但 PyTorch 需要特定类型。
print(dataframe.dtypes)
。确保全部都是数字。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)
确保转换对您的应用程序有意义。