首页 > 解决方案 > pandas astype(float) 返回为 int

问题描述

我正在通过 DataQuest Data Analyst 路径工作,并且正在使用笔记本电脑数据集。我正在尝试将列从字符串转换为浮点数(该列包含以 GHz 为单位的 cpu 处理器速度)。

laptops["processor_speed_ghz"] = laptops["cpu"].str.split().str[-1]
laptops["processor_speed_ghz"] = laptops["processor_speed_ghz"].str.replace("GHz", "")
laptops["processor_speed_ghz"] = laptops["processor_speed_ghz"].astype(float)
print(laptops["processor_speed_ghz"].value_counts())

转换工作完美,除了当我检查新列时,它说类型是int64而不是float64. 不知道我做错了什么。

标签: pythonpandasdata-cleaning

解决方案


这是预期的,因为函数的输出Series.value_counts返回计数。因此,获取索引由浮点数填充的系列,系列的值是整数。

laptops = pd.DataFrame({"processor_speed_ghz":[2.0,3.0, 2.0, 5.0, 3.0, 3.0]})
print (laptops)
   processor_speed_ghz
0                  2.0
1                  3.0
2                  2.0
3                  5.0
4                  3.0
5                  3.0

print(laptops["processor_speed_ghz"].value_counts())
3.0    3
2.0    2
5.0    1
Name: processor_speed_ghz, dtype: int64

print(laptops["processor_speed_ghz"].value_counts().index)
Float64Index([3.0, 2.0, 5.0], dtype='float64')

推荐阅读