试图将 pandas 列 dtype 从 str 更改为 float

数据挖掘 Python 熊猫
2022-02-11 17:51:23

我正在尝试将 pandas 列从 str 转换为 float。在使用 astype(float) 将字符串转换为浮点数之前,我需要从字符串中删除无法转换为浮点数的字符,例如逗号或空格。在尝试删除这些字符时,我使用了列表压缩和 str.replace 方法,如下所示:

data.loc[:,'column_name'] = [char.replace(',', '') for char in 
                                data.loc[:,'column_name']]

但我收到一条错误消息:

AttributeError: 'float' object has no attribute 'replace'.

然而,令人困惑的部分是,当我查看数据类型时,该列的数据类型显示为“o”或对象。所以我不知道发生了什么。

2个回答

在没有明确区分存储在列中pandasobject类型时使用类型。

所以,我猜在你的专栏中,有些对象是floattype ,有些对象是strtype或者,你也在处理NaN对象,NaN对象就是float对象。

a) 将列转换为字符串:您是从 CSV 或 XLS 格式文件获取 DataFrame 吗?然后在读取文件的那一刻,您可以指定该列是一个str类型,或者只是对您正在处理的列进行类型转换。

b) 之后,您可以应用字符串更改和/或处理 NaN 对象。

c) 最后,将列转换为`float类型

也许这是一种非常基本的方法,但我会这样做

listt = []
for i in data['column_name']:
     listt.append(float(i))
data['FloatData'] = listt