答案 0 :(得分:0)
默认情况下,在熊猫to_csv()
期间会完整输出小于1e16的数字,但是科学上记为1e16。
import pandas as pd
df = pd.DataFrame([1230000000000000, 12300000000000000, 1.23e+15, 1.23e+16])
df.to_csv('test.csv', index=False, header=False)
生产
1230000000000000.0
1.23e+16
1230000000000000.0
1.23e+16
您可以使用float_format
参数控制格式,将其转换为输出之前的字符串:
df.to_csv('test.csv', index=False, header=False, float_format='%.0f')
输出:
1230000000000000
12300000000000000
1230000000000000
12300000000000000
但是,正如其他人在评论中指出的那样,您需要注意如何查看.csv文件,因为Excel会将其重新格式化以默认显示。您可以使用任何文本编辑器按原样检查.csv文件格式。
如上所述,使用float_format
会将浮点数转换为字符串,因此,如果您想保证将浮点数在输出中视为字符串,则可以更改以使其强制用引号引起来,并用{ {1}},因此:
quoting=csv.QUOTE_NONNUMERIC
现在的输出是:
import csv
df.to_csv('test.csv', index=False, header=False, float_format='%.0f', quoting=csv.QUOTE_NONNUMERIC)