最近使用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精度控制的更多相关文章

  1. C++ 数据类型及相关问题 及输出精度控制

    1.有哪些数据类型? 2.数据类型在不同的编译器会有不同的位宽,如何得知? 使用如下命令: cout<<sizeof(int)<<endl; cout<<sizeo ...

  2. POI使用:用poi接口不区分xls/xlsx格式解析Excel文档(41种日期格式解析方法,5种公式结果类型解析方法,3种常用数值类型精度控制办法)

    一.使用poi解析excel文档 注:全部采用poi接口进行解析,不需要区分xls.xlsx格式,不需要判断文档类型. poi中的日期格式判断仅支持欧美日期习惯,对国内的日期格式并不支持判断,怎么办? ...

  3. Poj 2350 Above Average(精度控制)

    一.Description It is said that 90% of frosh expect to be above average in their class. You are to pro ...

  4. 文件重定向,getline()获取一样,屏幕输出流,格式控制符dec,oct,hex,精度控制setprecision(int num),设置填充,cout.width和file(字符),进制输入

     1.在window下的命令重定向输出到文件里 2.将内容输入到某个文件里的方式:命令<1.txt (使用1.txt中的命令) 3.读取文件里的名,然后将命令读取最后输出到文件里.命令< ...

  5. Java 浮点数精度控制

    1.String.format​(String format,Object… args) Java中用String.format()来控制输出精度, format参数用来设置精度格式, args参数代 ...

  6. cout输出控制——位数和精度控制

    刷到一道需要控制输出精度和位数的题目 刚开始以为单纯使用 iomanip 函数库里的 setprecision 就可以,但 OJ 给我判了答案错误,后来一想这样输出并不能限制位数只能限制有效位数. 比 ...

  7. 谈谈关于Python里面小数点精度控制的问题

    基础 浮点数是用机器上浮点数的本机双精度(64 bit)表示的.提供大约17位的精度和范围从-308到308的指数.和C语言里面的double类型相同.Python不支持32bit的单精度浮点数.如果 ...

  8. HDU 1007 Quoit Design(二分+浮点数精度控制)

    Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  9. 【Python】关于Python里面小数点精度控制的问题

    基础 浮点数是用机器上浮点数的本机双精度(64 bit)表示的.提供大约17位的精度和范围从-308到308的指数.和C语言里面的double类型相同.Python不支持32bit的单精度浮点数.如果 ...

随机推荐

  1. Linux下VNC配置多个桌面和修改密码 不会当系统重启vnc失效

    1:vncserver 2:iptables -I INPUT -p tcp --dport 5901 -j ACCEPT   客户端方式 3:iptables -I INPUT -p tcp --d ...

  2. DataTable的名称要后设置

    string sqldatabase = string.Format(dr["sql"].ToString(), drpat["PATIENT_ID"].ToS ...

  3. 安卓 Android题目大全

    安卓001个人事务管理系统(单端) 安卓002手机订餐系统 安卓003无线点菜 安卓004酒店房间预定系统 安卓005个人相册管理系统(单端) 安卓006计算器(单端) 安卓007英语学习(单端) ...

  4. openstack controller ha测试环境搭建记录(五)——配置rabbitmq集群

    配置rabbitmq集群的步骤非常简单,因为其本身含集群功能,参考openstack官网文档:http://docs.openstack.org/ha-guide/controller-ha-rabb ...

  5. java实现——006重建二叉树

    public class T006 { public static void main(String[] args){ int pre[] = {1,2,4,7,3,5,6,8}; int in[] ...

  6. Tessnet2图片识别(2)

    1. 引用 tessnet2.dll (只有NET2.0版本) 2. 视图页 <%@ Page Language="C#" MasterPageFile="~/Vi ...

  7. WCF必须使用证书验证吗

    你说的 ASP.NET Web Service在消息头里加个字段,服务端做验证,这个是可以的,但是无法保证传输的用户名和密码是加密安全的. 要求使用证书,也是强制服务器端,这里涉及到服务器身份鉴别的问 ...

  8. R语言实战(五)方差分析与功效分析

    本文对应<R语言实战>第9章:方差分析:第10章:功效分析 ================================================================ ...

  9. 【转】安卓Java的虚拟机区别

    Google于2007年底正式发布了Android SDK, 作为 Android系统的重要特性,Dalvik虚拟机也第一次进入了人们的视野.它对内存的高效使用,和在低速CPU上表现出的高性能,确实令 ...

  10. word2010中,插入-符号-公式显示是灰色的解决办法

    在文件选项里点转换,把文档转换成最新格式,也就是2010,因为兼容旧版本模式(比方03,07)的文档是无法使用公式编辑器功能的 步骤: 1.点击“文件” 2.出现下图: 3.点击“转换”图标,将生成最 ...