问题描述:
在处理csv数据文件时,我需要的是完整的整型数值,如下图
某一列的值用notepad++打开显示为18位的整型数值,但是用excel打开会以科学计数法形式显示,如果我们直接pd.read_csv()不做任何处理的话,显示的也是以科学计数法显示,并且数据精度丢失。如下图
查了很多资料,有以下方法,比如
方法一:
df['列名']=df['列名'].astype('int64')
结果如下
确实变成整型了,但是最后一位还是丢失了。
方法二:
pd.set_option('display.float_format',lambda x : '%.3f' % x)
这种方法跟方法一的结果是一样的,虽然是整型,但是数据精度被丢失,所以放弃。
百思不得其解的时候,突然灵机一动
太不容易了,(其实很多知识,都像是隔着一张纸,其实一捅破就豁然开朗,手到擒来。
最后其实只需在读取csv的时候,只需把该列指定为str数据类型,然后再转化成int64类型
data=pd.read_csv(path,encoding='gbk',dtype=str,header=None)
......
data['列名']=Original_data['列名'].astype('int64')
然后就得到了自己想要的结果,如下图,也就是文章开头自己想要的结果。
与大家共勉之,希望能帮助到大家。