如何解决TypeError:无法安全地将非等效float64强制转换为int64?

2024-06-01 22:00:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在DF中将一些浮点列转换为int,但我得到了上面的错误。我尝试过将其转换为0,也尝试过将NA填充为0(我不希望这样做,因为在我的数据集中NA是必需的)

我做错了什么? 我两个都试过了:

orginalData[NumericColumns] = orginalData[NumericColumns].astype('Int64')
#orginalData[NumericColumns] = orginalData[NumericColumns].fillna(0).astype('Int64')

但它总是导致同样的错误

TypeError: cannot safely cast non-equivalent float64 to int64

如何转换列


Tags: 数据df错误中将int浮点nasafely
3条回答
import numpy as np
orginalData[NumericColumns] = orginalData[NumericColumns].fillna(0).astype(np.int64, errors='ignore')

对于NAN,您需要将NAN替换为0,然后执行类型转换

为了安全地将float转换为int-dtype,数组只能包含整数。如果您坚持,您可以尝试以下方法:

orginalData[NumericColumns] = orginalData[NumericColumns].astype(int, errors='ignore')

根据您的pandas版本,您可以一次安全地转换多个列。您不需要使用apply来进行此操作

无需更换。 您可以通过执行以下操作安全地传递到Int64

df['A'] = np.floor(pd.to_numeric(df['A'], errors='coerce')).astype('Int64')

您的nans将被<NA>替换。 Source

您需要有熊猫>;。24版本

相关问题 更多 >