首页 > 解决方案 > / 的错误不支持的操作数类型:“str”和“int”

问题描述

我想将 X 列的平均值计算为矩阵,但收到主题错误消息,但是我试图将数据集转换为整数,Int或者to_numeric但没有工作

data = pd.read_csv('hw03_problem2.csv', skipinitialspace=True)
trainingYdf = data['mpg']
trainingXdf = data[['cylinders', 'displacement', 'horsepower', 'weight']]

Y = np.matrix(trainingYdf).T
X = np.matrix(trainingXdf)

X_columnMeans = X.mean(axis=0)

标签: python

解决方案


请查看您的输入 csv。如果有任何行不包含数字,pandas read_csv 会将每个单元格解释为一个字符串。因此,您的矩阵将不包含数字,而是包含字符串,这将导致您观察到的错误。使用 pd.read_csv('hw03_problem2.csv', skipinitialspace=True, dtype=int) 将通知熊猫,您期望整数(替换为您的 csv 包含的任何数字格式)。但是,如果 csv 中有包含文本的单元格,这仍然会失败

在 OP 编辑​​了他的问题之后

您的trainingYdf列仍将包含字符串矩阵,因为 np.matrix 不会转换为数值。

tmp = [["1","2","3"],["4","5","6"]]  
x = np.matrix(tmp)  
print(x)

将导致

[['1' '2' '3']
 ['4' '5' '6']]

在转换为 np.matrix 之前尝试转换“trainingYdf”中的每个条目(假设它是一维的)

trainingYdf = [float(x) for x in trainingYdf]


推荐阅读