如何使用pandas to_csv float_format?

2024-01-19

我正在从一个精度为 8 的数据文件中读取数据,然后在插入一些值后,我将它们保存起来,就像 float_format 选项不起作用的地方一样,

df.to_csv('data.dat',sep=' ', index=False, header=False, float_format="%.8f")

结果文件看起来像

0.02506602 0.05754493 0.36854688
0.02461631 0.0599653 0.43078098
0.02502534 0.06209149 0.44955311
0.4267356675182389 0.1718682822340447 0.5391386354945895
0.426701667727433 0.17191008887193007 0.5391897818631616
0.4266676661681287 0.17195189807522643 0.5392409104354972

前 3 行位于数据文件中,接下来的 3 行是新的插值。我希望所有值的长度相同。这里出了什么问题以及如何修复它?

另外:如果我可以针对不同的列以不同的方式控制浮点精度,那就太好了。


你的代码看起来不错。最有可能的是,您的输入数据存在问题。使用pd.DataFrame.dtypes检查所有输入系列的类型float。如果他们没有转换成float via:

df[col_list] = df[col_list].apply(pd.to_numeric, downcast='float').fillna(0)

这是一个工作示例:

from io import StringIO
import pandas as pd

mystr = StringIO("""0.02506602 0.05754493 0.36854688
0.02461631 0.0599653 0.43078098
0.02502534 0.06209149 0.44955311
0.4267356675182389 0.1718682822340447 0.5391386354945895
0.426701667727433 0.17191008887193007 0.5391897818631616
0.4266676661681287 0.17195189807522643 0.5392409104354972""")

df = pd.read_csv(mystr, delim_whitespace=True, header=None)

print(df.dtypes)

# 0    float64
# 1    float64
# 2    float64
# dtype: object

file_loc = r'C:\temp\test.dat'
df.to_csv(file_loc, sep=' ', index=False, header=False, float_format="%.8f")

df = pd.read_csv(file_loc, delim_whitespace=True, header=None)

print(df[0].iloc[-1])

# 0.42666767
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用pandas to_csv float_format? 的相关文章

随机推荐