首页 > 解决方案 > 如何将一列数据框从对象转换为浮点数

问题描述

听到的是我原来的数据框列类型:

#   Column                     Non-Null Count  Dtype 
---  ------                     --------------  ----- 
 0   NAME                       23605 non-null  object
 1   DEPARTMENT_NAME            23605 non-null  object
 2   TITLE                      23605 non-null  object
 3   REGULAR                    21939 non-null  object
 4   RETRO                      13643 non-null  object
 5   OTHER                      13351 non-null  object
 6   OVERTIME                   6826 non-null   object
 7   INJURED                    1312 non-null   object
 8   DETAIL                     2355 non-null   object
 9   QUINN/EDUCATION INCENTIVE  1351 non-null   object
 10  TOTAL EARNINGS             23605 non-null  object
 11  POSTAL                     23605 non-null  object

我想将其中一些转换为浮点类型,比如总收入,我试过:

df['TOTAL EARNINGS'] = df['TOTAL EARNINGS'].astype(int)

df['TOTAL EARNINGS'] = pd.to_numeric(df['TOTAL EARNINGS'])

但我得到了:

ValueError: setting an array element with a sequence.

或者

TypeError: Invalid object type at position 0

而且我不知道为什么,还有其他方法可以做到吗?这是我的数据:https ://data.boston.gov/dataset/418983dc-7cae-42bb-88e4-d56f5adcf869/resource/31358fd1-849a-48e0-8285-e813f6efbdf1/download/employeeearningscy18full.csv

这是我的数据框的一些图片: 在此处 输入图像描述 在此处输入图像描述 在此处 输入图像描述

标签: pythonpandas

解决方案


发生这种情况是因为您的原始数据有 2 行完全是文本。

首先执行下面的命令来清理这些行。

df = df[df["TOTAL EARNINGS"]!="TOTAL EARNINGS"]

然后,更改数据类型

df['TOTAL EARNINGS'] = df['TOTAL EARNINGS'].astype(float)

之后您可以检查数据类型

df.dtypes

推荐阅读