Pandas将float64列转换为int64时astype结果不符合预期如何解决
原因说明
astype('int64')对浮点数做类型转换时,只会提取数值的整数部分,直接丢弃小数位,不会对小数位做任何进位或拼接处理。你看到的4.000、6.454是Pandas展示数据时默认显示三位小数的效果,不是说存储的实际数值是4000、6454,实际的数值就是4、6.454,所以直接转int后自然只会得到4、6这类结果。- 你的示例代码里还存在拼写错误:
astpye应为astype,拼写错误会直接抛出属性异常,实际运行时需要先修正这个问题。
解决方案
要得到你期望的结果,只需要在转换类型前,先将数值乘以1000把三位小数转为整数部分即可,参考代码如下:
# 先填充空值,再乘以1000,最后转换为int64类型 print(df.sales.fillna(0).mul(1000).astype('int64'))
运行后输出结果如下:
0 4000 1 6454 2 5654 3 23463 Name: sales, dtype: int64
内容的提问来源于stack exchange,提问作者stackq
相关产品推荐
相关产品推荐

