我有一个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'
如何在没有科学概念的情况下获取csv中保存的数据?
names values
0 a 94184321380806.796875
1 b 22383735919307.046875
2 c 99180119890642.859375
答案 0 :(得分:3)
float_format参数应该是str,而是使用它
df.to_csv('example.csv', float_format='%f')
答案 1 :(得分:0)
尝试设置像这样的选项
pd.set_option('float_format', '{:f}'.format)
答案 2 :(得分:0)
对于python 3.xx(在3.6.5和3.7上测试):
For visualization of the dataframe pandas.set_option
import pandas as pd #import pandas package
# for visualisation fo the float data once we read the float data:
pd.set_option('display.html.table_schema', True) # to can see the dataframe/table as a html
pd.set_option('display.precision', 5) # setting up the precision point so can see the data how looks, here is 5
df = pd.DataFrame({'names': ['a','b','c'],
'values': np.random.rand(3)*100000000000000}) # generate random dataframe
df.dtypes # check datatype for columns
[output]:
names object
values float64
dtype: object
df # output of the dataframe
[output]:
names values
0 a 6.56726e+13
1 b 1.63821e+13
2 c 7.63814e+13
df.to_csv('estc.csv',sep=',', float_format='%.13f') # write with precision .13
,names,values
0,a,65672589530749.0703125000000
1,b,16382088158236.9062500000000
2,c,76381375369817.2968750000000
df.to_csv('estc.csv',sep=',', float_format='%f') # this will remove the extra zeros after the '.'
,names,values
0,a,65672589530749.070312
1,b,16382088158236.906250
2,c,76381375369817.296875