无法将对象更改为漂浮在熊猫数据框中

时间:2018-08-19 13:28:33

标签: python pandas object types

刚刚开始学习python。尝试将column数据类型从object更改为float以取出均值。我试图将[]更改为()甚至是“”。我不知道这是否有所作为。请帮助我找出问题所在。谢谢!

我的代码:

df["normalized-losses"]=df["normalized-losses"].astype(float)
我看到的

错误:作为图片enter image description here

4 个答案:

答案 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)

这应该有效。它的作用是,它从数据帧中获取归一化损失列,将其转换为浮点,然后将其重新分配给同一数据帧中的归一化列。但是有时,在尝试上述语句之前,可能需要进行一些数据处理。