pandas to_csv:抑制混合类型数据框的科学概念

syd*_*syd 2 python pandas

我有一个包含多个列的 Pandas 数据框,其类型为 float64 或字符串。我正在尝试to_csv将数据帧写入输出文件。然而,它用科学概念输出大数字。例如,如果数字为 1344154454156.992676,则它在文件中保存为 1.344154e+12。

如何抑制科学概念to_csv并保留输出文件中的数字?我尝试float_format在函数中使用参数to_csv,但它失败了,因为数据框中也有带有字符串的列。

以下是一些示例代码:

import pandas as pd
import numpy as np
import os

df = pd.DataFrame({'names': ['a','b','c'], 
                   'values': np.random.rand(3)*100000000000000})

df.to_csv('example.csv')

os.system("cat example.csv")
 ,names,values
0,a,9.41843213808e+13
1,b,2.23837359193e+13
2,c,9.91801198906e+13

# if i set up float_format:
df.to_csv('example.csv',  float_format='{:f}'.format)

ValueError: Unknown format code 'f' for object of type 'str'
Run Code Online (Sandbox Code Playgroud)

如果没有像下面这样的科学概念,如何获取保存在 csv 中的数据?

  names                values
0     a 94184321380806.796875
1     b 22383735919307.046875
2     c 99180119890642.859375
Run Code Online (Sandbox Code Playgroud)

小智 6

float_format 参数应该是 str,请使用它

df.to_csv('example.csv', float_format='%f')
Run Code Online (Sandbox Code Playgroud)