我尝试在DF中将一些float列转换为int,但我遇到了以上错误。我尝试了将其转换为0以及将fillna转换为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
我可以做些什么来转换列?
4条答案
按热度按时间klr1opcd1#
无需替换
nan
。您可以通过执行以下操作**安全地传递到Int64
:您的
nans
将替换为<NA>
。Source你需要有Pandas〉.24版本.
woobm2wo2#
对于NaN,您需要将NaN替换为0,然后执行类型转换
iyfamqjs3#
所接受的解并非在所有情况下都是正确的,请回复:“np.floor”。来自以下位置的文档:https://numpy.org/doc/stable/reference/generated/numpy.floor.html
标量x的下限是最大整数i,使得i〈= x。它通常表示为[x]。
这将使9.99变为9.00,并且任何下游计算相对于原始数据集将是不准确的。
yfwxisqw4#
数组必须只包含整数才能安全地将float转换为int dtype。如果您坚持,可以尝试如下操作:
根据你的panda版本,你可以安全地一次转换多个列,你不需要使用apply。