关于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的单精度浮点数.如果 ...
随机推荐
- MountService初探
MountService作为Vold的客户端,会接收来自vold的消息,并且内部定义保存了各种Volume相关的状态定义: 1.VolumeState class VolumeState { publ ...
- 转 使用 HttpClient 4 进行文件上传
http://www.tuicool.com/articles/Y7reYb 1. 概述 本教程我们将描述如何使用 HttpClient 4进行一次多文件上传操作 . 我们将使用 http://ec ...
- openstack controller ha测试环境搭建记录(十五)——创建实例
# source demo-openrc.sh # ssh-keygenGenerating public/private rsa key pair.Enter file in which to sa ...
- python----mysql链接汉字编码的问题
解决python连接mysql,UTF-8乱码问题 1. Python文件设置编码 utf-8 (文件前面加上 #encoding=UTF-8) 2. MySQL数据库charset=utf ...
- Android中使用http协议访问网络
HTTP协议的工作原理:客户端向服务器端发送http请求,服务器端收到请求后返回一下数据给客户端,客户端接受消息并进行解析. 在Android中发送http请求的方式有两种,第一种是通过HttpURL ...
- JavaScript DOM节点操作总结
节点类型 节点类型主要有三种:元素节点,属性节点和文本节点. 而对DOM的主要也就是围绕元素节点和属性节点的增删改查.下面就分别从对元素节点的操作和对属性节点的操作来介绍. 元素节点 查 在对DOM进 ...
- 【java基础】接口VS抽象类
1.至少有一个被abstract修饰的方法,同时修饰类名的类为抽象类,抽象的方法必须被子类覆盖,抽象的类必须被继承,抽象的类可以包含非抽象方法,只能单继承. 2.接口中所有的变量是static fin ...
- BZOJ1478 Sgu282 Isomorphism
Problem A: Sgu282 Isomorphism Time Limit: 15 Sec Memory Limit: 64 MBSubmit: 172 Solved: 88[Submit] ...
- javascript中的__proto__和prototype
一.2个参考网址: http://icekiller110.iteye.com/blog/1566768 http://www.cnblogs.com/snandy/archive/2012/09/0 ...
- Django之强大的Form功能
转载: http://www.cnblogs.com/0820-zq/p/5807980.html Form Form的验证思路 前端:form表单 后台:创建form类,当请求到来时,先匹配,匹配出 ...