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

标签 python csv numpy floating-point pandas

问题

是否可以专门为 Python pandas 封装方法打印的每一列指定浮点精度 pandas.DataFrame.to_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

最佳答案

在将数据框导出到 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')

关于python - 使用 pandas.DataFrame.to_csv() 按列输出不同的精度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20003290/

相关文章:

python - 手动设置 scipy 稀疏矩阵形状的含义

python - 将具有 None 值的 python 列表转换为具有 nan 值的 numpy 数组

python - 如何从 numpy 中的 dtype 获取步幅?

python - 在递归期间将值字符串化而不是打印它们

python - 如何在将长 DEAP 日志(10 MM)转换为 Colab 中的数据帧时修复 RAM 限制?

BASH:根据公共(public)字段名称加入 2 个 CSV 文件

excel - 将多个 csv 文件合并到一个 xls 工作簿 Python 3

python - 如何将常规 numpy 数组转换为记录数组?

Python - 将注释添加到三引号字符串中

java - Jackson 可以解析不同行具有不同架构的 CSV 文件吗?