关于pandas精度控制
最近使用pandas处理一批数据,数据中包含几个columns,它们的数据精度,例如
3.25165,1451684684168.0,0.23
处理完之后保存csv时发现,1451684684168.0被保存为1.45168e+12,我需要完全保存数据信息
Google一番发现pandas自带了如下函数:
DataFrame.to_csv('out.csv', float_format = '%.3f')
由于我的文件中包含不同精度数据,不能一概而论,所以初步想法是想把1451684684168.0转换为str处理,
有以下几种办法:
1.df['id'].apply(str)或者df['id'].astype(basestring)
这个方法可以将某个column变为str,缺点是不能控制精度,转出来还是1.45168e+12
2.pandas.DataFrame.to_string或者pandas.Series.to_string
这个两种方法可以将整个DataFrame或者Series转成str,参数很多,而且可以控制精度。
需要注意的是参数formatters和float_format,它们两的参数是以函数的形式给出的
######################################################
myformatter = lambda x: '%4.1f' % x
formatters = {'A': myformatter}
float_format = myformatter
######################################################
由于我使用的是pd(0.17.1)版本,与官方的0.19.2的不同,
pandas.Series.to_string参数中缺少index
所以我将Series转换为DataFrame处理,下面给出代码:
#####################################################
Tpart1 = dfN.iloc[:,0:12]
Tpart2 = dfN.iloc[:,12]
Tpart3 = dfN.iloc[:,13:16]
myformat = lambda x: '%.0f'%x # #保留整数
str1 = pd.DataFrame(Tpart2, columns=['time'])
str2 = str1.to_string(float_format = myformat, index = False, header = False) # #去除column name以及index name
str3 = str2.split('\n')
Tpart2 = pd.DataFrame(str3, columns=['time']) ##重新变为DataFrame
npart1 = pd.concat([Tpart1, Tpart2, Tpart3], axis = 1) # #合并
#######################################################
pandas的向量处理速度还是很快的,程序中尽量不使用for语句来逐一处理。
关于pandas精度控制的更多相关文章
- C++ 数据类型及相关问题 及输出精度控制
1.有哪些数据类型? 2.数据类型在不同的编译器会有不同的位宽,如何得知? 使用如下命令: cout<<sizeof(int)<<endl; cout<<sizeo ...
- POI使用:用poi接口不区分xls/xlsx格式解析Excel文档(41种日期格式解析方法,5种公式结果类型解析方法,3种常用数值类型精度控制办法)
一.使用poi解析excel文档 注:全部采用poi接口进行解析,不需要区分xls.xlsx格式,不需要判断文档类型. poi中的日期格式判断仅支持欧美日期习惯,对国内的日期格式并不支持判断,怎么办? ...
- Poj 2350 Above Average(精度控制)
一.Description It is said that 90% of frosh expect to be above average in their class. You are to pro ...
- 文件重定向,getline()获取一样,屏幕输出流,格式控制符dec,oct,hex,精度控制setprecision(int num),设置填充,cout.width和file(字符),进制输入
1.在window下的命令重定向输出到文件里 2.将内容输入到某个文件里的方式:命令<1.txt (使用1.txt中的命令) 3.读取文件里的名,然后将命令读取最后输出到文件里.命令< ...
- Java 浮点数精度控制
1.String.format(String format,Object… args) Java中用String.format()来控制输出精度, format参数用来设置精度格式, args参数代 ...
- cout输出控制——位数和精度控制
刷到一道需要控制输出精度和位数的题目 刚开始以为单纯使用 iomanip 函数库里的 setprecision 就可以,但 OJ 给我判了答案错误,后来一想这样输出并不能限制位数只能限制有效位数. 比 ...
- 谈谈关于Python里面小数点精度控制的问题
基础 浮点数是用机器上浮点数的本机双精度(64 bit)表示的.提供大约17位的精度和范围从-308到308的指数.和C语言里面的double类型相同.Python不支持32bit的单精度浮点数.如果 ...
- HDU 1007 Quoit Design(二分+浮点数精度控制)
Quoit Design Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- 【Python】关于Python里面小数点精度控制的问题
基础 浮点数是用机器上浮点数的本机双精度(64 bit)表示的.提供大约17位的精度和范围从-308到308的指数.和C语言里面的double类型相同.Python不支持32bit的单精度浮点数.如果 ...
随机推荐
- MFC-----在MFC中使用Picture控件加载任意图片
对于刚刚接触OpenCV的童鞋来说,如何在MFC中加载并显示一张图片.应该是初期必定会碰到的问题之一.因此本文在分享这方面经验的同时,也相当于是写给自己的一份备忘录. 本文使用的是OpenCV2.1+ ...
- python之路:进阶篇 内置函数
li = [11, 22, 33] news = map( li = [100, 2200, 3300] news = map( [13, 24, 35] [11, 11, 11] [22, 4 ...
- column name is keyword from
mysql: select tablename.from from tablename; postgresql: select "from" from tablename; sql ...
- IT人常用的网站
一.网页设计类 蓝色理想 http://www.blueidea.com 网页设计师联盟 http://www.68design.net 网页设计大本营 http://www.code-123.com ...
- hibernate---一对一双向外键关联 (重要)
husband--wife: one to one 双向外键关联: 主导方: @OneToOne @JoinColumn(name="wifeId") 被主导方: @OneToOn ...
- angular change the url , prevent reloading
http://stackoverflow.com/questions/14974271/can-you-change-a-path-without-reloading-the-controller-i ...
- arcengine C#关于动态添加图层
动态加载影像图层为例 研究了两三天算是弄出来了.本例适合影像数据量特别的大程序使用,可以动态的添加删除影像数据,还有不完善的地方,不过基本满足要求. 1.首先得到关键点的图层 m_Map = axMa ...
- Ubuntu安装PHP时候出错--xml2-config not found
在Ubuntu下接着安装php时候,在configure后,又出现错误提示:error: xml2-config not found. Please check your libxml2 instal ...
- FZU 2091 播放器
简单模拟题,开个栈维护一下即可. #include<cstdio> #include<cstring> #include<cmath> #include<st ...
- 17、手把手教你Extjs5(十七)模块的新增、修改、删除操作
上节在Grid展示时做了一个金额单位可以手工选择的功能,如果你要加入其他功能,也只要按照这个模式来操作就行了,比如说你想改变金额字段的颜色.小数位数.零值是否显示.货币符号.单位显示在标题栏或者跟在金 ...