刚刚开始学习python。尝试将column数据类型从object更改为float以取出均值。我试图将[]更改为()甚至是“”。我不知道这是否有所作为。请帮助我找出问题所在。谢谢!
我的代码:
df["normalized-losses"]=df["normalized-losses"].astype(float)
我看到的错误:作为图片enter image description here
答案 0 :(得分:2)
欢迎您使用Stack Overflow,祝您Python旅途顺利!编码的重要部分是学习如何解释错误消息。在这种情况下,回溯非常有用-它告诉您不能在Date date1 = new SimpleDateFormat("dd/MM/yyyy").parse(x);
之后调用 Date date1 = null;
try {
date1 = new SimpleDateFormat("dd/MM/yyyy").parse(x);
} catch (Exception e) {
e.printStackTrace();
}
,因为数据框没有此名称的方法。
当然,您并不是在尝试调用normalized
,而是在df
列。完成此操作的方式就像您已经做过一次-normalized
。
关于您的主要问题-如果即使您的一个值也不能转换为浮点型,则列范围操作将失败。这是很常见的。您需要首先消除该列中的所有非数字项,找到它们的一种方法是使用normalized-losses
。
答案 1 :(得分:1)
使用:
df['normalized-losses'] = df['normalized-losses'][~(df['normalized-losses'] == '?' )].astype(float)
使用df.normalized-losss会导致解释器评估不存在的df.normalized。您编写的语句执行(df.normalized)-(loss.astype(float))。您的数据中似乎有一个问号,无法转换为float。上面的语句仅转换为那些浮点的行不包含问号并删除其余部分。如果不想删除列,可以使用以下命令将其替换为0
df['normalized-losses'] = df['normalized-losses'].replace('?', 0.0)
df['normalized-losses'] = df['normalized-losses'].astype(float)
答案 2 :(得分:0)
您不能在属性或变量名称中使用-
。也许您是说normalized_losses
?
答案 3 :(得分:0)
在这种情况下,“ df.normalized-losses”对python没有任何意义。您可以将其替换为df["normalized-losses"]
。通常,如果您尝试
df["normalized-losses"]=df["normalized-losses"].astype(float)
这应该有效。它的作用是,它从数据帧中获取归一化损失列,将其转换为浮点,然后将其重新分配给同一数据帧中的归一化列。但是有时,在尝试上述语句之前,可能需要进行一些数据处理。