问题
是否可以为printed pandas包方法csv打印的每一列指定浮动精度?
背景
如果我有一个像这样排列的pandas数据文件:
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选项,可以用来指定一个精度,但这适用于打印时数据的所有列的精度。
当我这样说的时候:
df_data.to_csv(outfile, index=False,
header=False, float_format='%11.6f')我得到以下信息,其中vals的精度不准确:
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发布于 2013-11-15 17:23:09
在将数据帧导出到CSV文件之前更改列"vals“的类型
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')发布于 2016-10-05 02:02:26
hknust第一行的最新版本将是:
df_data['vals'] = df_data['vals'].map(lambda x: '{0:.1}'.format(x))不使用科学符号印刷:
df_data['vals'] = df_data['vals'].map(lambda x: '{0:.1f}'.format(x)) 发布于 2020-06-24 02:38:36
这个问题有点老了,但我想给出一个更好的答案,我想是这样的:
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解决方案,并结合上面的链接。
https://stackoverflow.com/questions/20003290
复制相似问题