首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用pandas.DataFrame.to_csv()按列输出不同的精度?

用pandas.DataFrame.to_csv()按列输出不同的精度?
EN

Stack Overflow用户
提问于 2013-11-15 14:26:21
回答 6查看 55.8K关注 0票数 52

问题

是否可以为printed pandas包方法csv打印的每一列指定浮动精度?

背景

如果我有一个像这样排列的pandas数据文件:

代码语言:javascript
复制
In [53]: df_data[:5]
Out[53]: 
    year  month  day       lats       lons  vals
0   2012      6   16  81.862745 -29.834254   0.0
1   2012      6   16  81.862745 -29.502762   0.1
2   2012      6   16  81.862745 -29.171271   0.0
3   2012      6   16  81.862745 -28.839779   0.2
4   2012      6   16  81.862745 -28.508287   0.0

有一个float_format选项,可以用来指定一个精度,但这适用于打印时数据的所有列的精度。

当我这样说的时候:

代码语言:javascript
复制
df_data.to_csv(outfile, index=False,
                   header=False, float_format='%11.6f')

我得到以下信息,其中vals的精度不准确:

代码语言:javascript
复制
2012,6,16,  81.862745, -29.834254,   0.000000
2012,6,16,  81.862745, -29.502762,   0.100000
2012,6,16,  81.862745, -29.171270,   0.000000
2012,6,16,  81.862745, -28.839779,   0.200000
2012,6,16,  81.862745, -28.508287,   0.000000
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-11-15 17:23:09

在将数据帧导出到CSV文件之前更改列"vals“的类型

代码语言:javascript
复制
df_data['vals'] = df_data['vals'].map(lambda x: '%2.1f' % x)

df_data.to_csv(outfile, index=False, header=False, float_format='%11.6f')
票数 46
EN

Stack Overflow用户

发布于 2016-10-05 02:02:26

hknust第一行的最新版本将是:

代码语言:javascript
复制
df_data['vals'] = df_data['vals'].map(lambda x: '{0:.1}'.format(x))

不使用科学符号印刷:

代码语言:javascript
复制
df_data['vals'] = df_data['vals'].map(lambda x: '{0:.1f}'.format(x)) 
票数 10
EN

Stack Overflow用户

发布于 2020-06-24 02:38:36

这个问题有点老了,但我想给出一个更好的答案,我想是这样的:

代码语言:javascript
复制
formats = {'lats': '{:10.5f}', 'lons': '{:.3E}', 'vals': '{:2.1f}'}

for col, f in formats.items():
    df_data[col] = df_data[col].map(lambda x: f.format(x))

我尝试了解决方案这里,但是它对我无效,我决定尝试这里给出的previus解决方案,并结合上面的链接。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20003290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档