Python 中 TypeError: Cannot Convert the Series to <Class 'Float'> 错误
通过这个解释,我们将了解为什么会收到错误 TypeError: cannot convert the series to <class 'float'>
。 我们还将学习如何修复它并更改 Python 中 Pandas 系列的数据类型。
在 Python 中无错误地转换 Pandas 系列的数据类型
让我们来看一个示例数据集。 我们将导入 Pandas 库,然后导入数据集; 我们将从各国的酒精消费量开始。
我们将声明一个名为“Alcohol”的变量,并从 http://bit.ly/drinksbycountry
读取 CSV 文件。
执行以下代码后,我们将查看 head(),我们应该看到六列和四行数字。
import pandas as pd
Alcohol = pd.read_csv('http://bit.ly/drinksbycountry')
Alcohol.head()
输出:
我们来看看这些列的数据类型。 我们将使用酒精数据框的 dtypes 属性来查找数据类型。
Alcohol.dtypes
现在我们将看到三列是整数列,一列是浮点列,然后两列是对象,这意味着国家和大陆只是字符串。
输出:
假设我们想要将spirit_servings 列转换为浮点而不是整数。 我们所要做的就是使用系列方法 astype()
并将其传递给 float,这意味着我们将其转换为浮点类型。
如果我们想要修改数据框,可以添加新列或覆盖现有的spirit_servings列。 如果我们定义 dtypes 来检查列的数据类型,我们会看到它已经改变,spirit_servings 现在是一个浮点列。
Alcohol['spirit_servings']=Alcohol.spirit_servings.astype(float)
Alcohol.dtypes
输出:
现在您可能想知道它有什么用。 当您有一个数据文件,其中数字存储为字符串并已将其读入 Pandas 字符串但想要对其进行数学运算时,通常会执行此操作。
要对列进行数学运算,它必须是数字类型,因此列类型应该是浮点数,这是更常见的用例。 如果不将其转换为 float 类型,您将收到类似 TypeError: Cannot Convert the Series to <class 'float'>
的错误。
又出现了一个问题:在实际读取 CSV 文件之前,它是如何找到每一列的类型的? 现在我们将在CSV读取过程中更改数据类型; 我们必须再添加一个参数,dtype。
我们将它传递给字典; 字典键是spirit_servings,字典值是浮点数。 现在,如果我们检查该列的数据类型,我们会看到,spirit_servings 再次转换为浮点型。
Alcohol = pd.read_csv('http://bit.ly/drinksbycountry',dtype={'spirit_servings':'float'})
Alcohol.dtypes
输出:
这个和上面唯一的区别是这个方法是在读取过程中进行的。 在上面,我们在创建数据框后对其进行了转换。
Python 中无错误转换 Pandas 系列数据类型的另一个示例
现在我们将向您展示另一个数据集和另一个使用芯片订单数据的示例。
CHIP_ORDERS=pd.read_table('http://bit.ly/chiporders')
CHIP_ORDERS.head()
我们来看一下专栏。 我们想要关注 item_price 列。
CHIP_ORDERS.dtypes
Pandas 将 item_price 列存储为对象,即字符串,因为它不明白这些是数字。
为了用它做一些数学运算,我们必须从一系列中删除一个字符,比如 $ 符号。 我们可以使用 str 和 Replace()
方法将美元符号替换为空,但这还不够; 如果我们尝试对级数应用数学运算,则会出现错误。
CHIP_ORDERS.item_price.str.replace('$','').mean()
输出:
ValueError: could not convert string to float: '2.39 3.39 3.39...
这是因为即使我们删除了美元符号,它仍然是一个字符串,所以我们必须将其类型转换为浮点数。 将其类型转换为浮点数后,我们可以对其进行数学运算。
CHIP_ORDERS.item_price.str.replace('$','').astype(float).mean()
输出:
相关文章
Python 中错误 Address Already in Use
发布时间:2023/07/09 浏览次数:173 分类:Python
-
我们将通过示例介绍Python中何时出现 Address already in use 错误以及如何解决。Python 中的错误Address already in use 本文将讲述运行使用端口的程序时发生的Python堆栈错误。
Python 中错误 ValueError: Math Domain Error
发布时间:2023/07/09 浏览次数:607 分类:Python
-
在本篇文章中,我们的目标是探索解决 Python 中的 ValueError: math domain error 错误的不同方法。当编码方面数学(基础或高级)的使用存在固有缺陷时,Python 中通常会引发 ValueError: math domain error 错
Python 错误 Name xrange Is Not Defined
发布时间:2023/07/09 浏览次数:153 分类:Python
-
本篇文章将介绍如何解决 Python 中 name 'xrange' is not defined 的错误。解决Python中name 'xrange' is not defined错误 让我们尝试理解为什么会发生这个特定的错误。 让我们首先尝试复制这个问题。
Python 错误 TypeError: List Indices Must Be Integers, Not STR
发布时间:2023/07/09 浏览次数:954 分类:Python
-
在本篇文章中,我们的目标是探索如何避免 TypeError: list indices must be integers or slices, not str。TypeError主要发生在Python中,每当操作的数据类型出现问题时。
Python 中错误 AttributeError: __Enter__
发布时间:2023/07/09 浏览次数:2241 分类:Python
-
在 Python 中,AttributeError 是在未定义 __enter__ 函数的情况下通过 with 语句使用类的对象时导致的错误。
Python 错误 ModuleNotFoundError: No Module Named '_Ctypes'
发布时间:2023/07/09 浏览次数:686 分类:Python
-
本篇文章旨在了解如何解决 Python 中的 ModuleNotFoundError: No module named '_ctypes'。了解Python中 ModuleNotFoundError: No module named '_ctypes' 根本原因
Python 错误 AttributeError: '_io.TextIOWrapper' Object Has No Attribute 'Split'
发布时间:2023/07/09 浏览次数:1063 分类:Python
-
本篇文章将介绍如何修复 Python 中的 AttributeError: '_io.TextIOWrapper' object has no attribute 'split'。在 _io.TextIOWrapper 上使用 split() 方法会返回 AttributeError
Python 错误 AttributeError: _csv.reader Object Has No Attribute Next
发布时间:2023/07/09 浏览次数:286 分类:Python
-
本篇文章将介绍如何修复 Python 中的 AttributeError: '_csv.reader' object has no attribute 'next'。修复 Python 中的 AttributeError: '_csv.reader' object has no attribute 'next' 错误
Python 错误 Error: Invalid Command Bdist_wheel
发布时间:2023/07/09 浏览次数:847 分类:Python
-
在 Python 中构建 wheel 时,有时 setup.py 可能会退出并出现错误 invalid command 'bdist_wheel'。 本篇文章将讨论在 Python 中解决此问题的可能解决方案。安装wheel包来修复Python中 Error:invalid command 'bdist_