问题描述:
在使用pandas的dataframe的时候,有时候,会遇到明明应该是一串数字的,它使用科学计数法表示出来。
例如:
136377710738 变成 1.36378e+11
它自动将长整数,或者长小数,转成了这种不方便使用的形式。当然它只是形式变了,但是不影响计算结果。
但是想将其转换成正常显示的时候,我们会使用,astype()进行转换,但是有时候会遇到,转换完之后,数值变得莫名其妙。
例如:
136377699741 变成 -2147483648
原因:
我们在查看这个数字格式的时候, 会发现,它不是常规的float类型,正式因为格式问题,造成了这个状况。具体原因,暂时没有找到资料。
[]:df_combine['goods_id']
[]: 0 1.363777e+11
1 1.363777e+11
2 1.363777e+11
Name: goods_id, dtype: float64
[]:df_combine['goods_id'].astype(int)
[]: 0 -2147483648
1 -2147483648
2 -2147483648
Name: goods_id, dtype: int32
[]:df_combine['goods_id'].astype(str)
[]: 0 136377721179.0
1 136377699758.0
2 136377707488.0
3 136377699772.0
Name: goods_id, Length: 12155, dtype: object
解决方法:
使用astype(np.int64)
解决
[]:df_combine['goods_id'].astype(np.int64)
[]: 0 136377721179
1 136377699758
2 136377707488
3 136377699772
Name: goods_id, Length: 12155, dtype: int64