我有一个pandas数据框当前所有列都是浮点数,我使用DF.to_csv导出到csv文件。
我希望将其中一个列导出为int而不是float。第二列包含许多小数的数字,并以科学记数法格式导出。我希望以一定的精度导出为常规十进制数,而不是科学记数法。
假设我的DF名为DataOut,并且列'A','B'和'C'
我有什么可以添加到
DataOut.to_csv(filename, mode = 'w', header = False , index=False)
这样A中的值导出为int,B中的值导出为小数,最大精度为20位?
答案 0 :(得分:3)
制作数据框的副本,将各列围绕整数,然后导出CSV:
import pandas as pd
import random
#generate a dataframe with two columns, both floating point
df = pd.DataFrame({'A':[random.random()*10 for i in range(10)],
'B':[random.random()*20 for i in range(10)]})
df2 = df.copy() #make a copy to preserve your original
df2.loc[:, 'A'] = df2['A'].apply(int) #convert A to an int
df2.loc[:, 'B'] = df2['B'].round(20) #round B to 20 points of precision
df2.to_csv('test.csv', header = None, index = False)
答案 1 :(得分:1)
表示浮动
Which works similarly for to_csv:
df.to_csv('df.csv', float_format='{:f}'.format, encoding='utf-8')
来源https://stackoverflow.com/a/23006399/4941927 也许用float_format也可以转换为int,但我不知道。
对于int转换我认为可以在解析器之前使用round()函数和生成器到普通文件,但我确定因为我从不使用panda
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_csv.html
我会看到你的完整代码@AlexKinman