如何修复:valueerror:无法将 float nan 转换为 int


使用 pandas 时可能遇到的错误是:

 ValueError : cannot convert float NaN to integer

当您尝试将 pandas DataFrame 中的列从浮点数转换为整数且该列包含 NaN 值时,会发生此错误。

以下示例展示了如何在实践中纠正此错误。

如何重现错误

假设我们创建以下 pandas DataFrame:

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, np. no , 10, 6, 5, np. no , 9, 12]})

#view DataFrame
df

        points assists rebounds
0 25 5 11
1 12 7 NaN
2 15 7 10
3 14 9 6
4 19 12 5
5 23 9 NaN
6 25 9 9
7 29 4 12

目前,“bounces”列是“float”数据类型。

 #print data type of 'rebounds' column
df[' rebounds ']. dtype

dtype('float64')

假设我们尝试将“bounces”列从浮点数转换为整数:

 #attempt to convert 'rebounds' column from float to integer
df[' rebounds '] = df[' rebounds ']. astype (int)

ValueError : cannot convert float NaN to integer 

我们收到一个ValueError ,因为“bounces”列中的 NaN 值无法转换为整数值。

如何修复错误

修复此错误的方法是在尝试将列从浮点转换为整数之前处理 NaN 值。

我们可以使用以下代码首先识别包含 NaN 值的行:

 #print rows in DataFrame that contain NaN in 'rebounds' column
print (df[df[' rebounds ']. isnull ()])

   points assists rebounds
1 12 7 NaN
5 23 9 NaN

然后,我们可以删除具有 NaN 值的行或将 NaN 值替换为另一个值,然后再将列从浮点转换为整数:

方法 1:删除具有 NaN 值的行

 #drop all rows with NaN values
df = df. dropna ()

#convert 'rebounds' column from float to integer
df[' rebounds '] = df[' rebounds ']. astype (int) 

#view updated DataFrame
df
	points assists rebounds
0 25 5 11
2 15 7 10
3 14 9 6
4 19 12 5
6 25 9 9
7 29 4 12

#view class of 'rebounds' column
df[' rebounds ']. dtype

dtype('int64')

方法 2:替换 NaN 值

 #replace all NaN values with zeros
df[' rebounds '] = df[' rebounds ']. fillna ( 0 )

#convert 'rebounds' column from float to integer
df[' rebounds '] = df[' rebounds ']. astype (int) 

#view updated DataFrame
df

	points assists rebounds
0 25 5 11
1 12 7 0
2 15 7 10
3 14 9 6
4 19 12 5
5 23 9 0
6 25 9 9
7 29 4 12

#view class of 'rebounds' column
df[' rebounds ']. dtype

dtype('int64')

请注意,这两种方法都允许我们避免ValueError并成功将浮点列转换为整数列。

其他资源

以下教程解释了如何修复 Python 中的其他常见错误:

如何修复:列重叠但未指定后缀
如何修复:对象“numpy.ndarray”没有“append”属性
如何修复:如果使用所有标量值,则需要传递索引

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注