我正在尝试将 DF 中的一些浮点列转换为 int,但出现上述错误。我尝试过将其转换以及 fillna 为 0(我不喜欢这样做,因为在我的数据集中需要 NA)。
我究竟做错了什么?我都尝试过:
orginalData[NumericColumns] = orginalData[NumericColumns].astype('Int64')
#orginalData[NumericColumns] = orginalData[NumericColumns].fillna(0).astype('Int64')
Run Code Online (Sandbox Code Playgroud)
但它一直导致同样的错误
TypeError: cannot safely cast non-equivalent float64 to int64
Run Code Online (Sandbox Code Playgroud)
我可以做什么来转换列?
Har*_*vey 33
无需更换 nan。您可以通过执行以下操作Int64 安全地通过:
df['A'] = np.floor(pd.to_numeric(df['A'], errors='coerce')).astype('Int64')
Run Code Online (Sandbox Code Playgroud)
您的nans将被替换为<NA>.
来源
您需要有 pandas >.24 版本。
import numpy as np
orginalData[NumericColumns] = orginalData[NumericColumns].fillna(0).astype(np.int64, errors='ignore')
Run Code Online (Sandbox Code Playgroud)
对于 NaN,您需要将 NaN 替换为 0,然后进行类型转换