[英]Pandas.to_excel rounding my decimal values up to 2 decimal places, but gives accurate results when converted to_csv
我有一个拥有大量记录的 dataframe。
当此 dataframe 转换为 CSV 时,它会给出所有小数点后的准确结果。 然而,当转换为 excel (xlsx) 时,相同的 dataframe 然后十进制值在 Excel 表中四舍五入(其中大部分保留到小数点后两位)。
例如:
CSV output:3363.6499999999999
Excel output:3363.65
我正在 output=BytesIO() 中编写 output 以使用“put(output.getvalue())”将 Excel 保存在 S3 中
output= BytesIO()
writer=pd.ExcelWriter(output)
df.to_excel(writer, index= False)
writer.save()
我不想圆。 我希望我的实际价值没有任何变化。 如何在不四舍五入的情况下转换 to_excel?
另一个例子:
import xlsxwriter
writer = pd.ExcelWriter('c:/.../pandas_excel_test.xlsx', engine = 'xlsxwriter')
df.to_excel(writer, index=False, sheet_name='Sheet1')
workbook = writer.book
cell_format1 = workbook.add_format()
cell_format1.set_num_format('0.000')
worksheet.write(1, 0, 3.1415926, cell_format1)
3.142
试试这个例子:
df = pd.DataFrame({
'date':['1/15/2016','2/1/2016','2/15/2016','3/15/2016'],
'numA':[1000,2000,3000,4000.3],
'numB':[10000,20000.2,30000,40000]
})
writer = pd.ExcelWriter('c:/.../pandas_excel_test.xlsx', engine = 'xlsxwriter')
df.to_excel(writer, index=False, sheet_name='Sheet1')
workbook = writer.book
worksheet = writer.sheets['Sheet1']
format1 = workbook.add_format({'num_format': '0.00'})
worksheet.set_column('C:C', None, format1) # Adds formatting to column C
writer.save()
您可以将.add_format({'num_format': '0.00'})
中的格式0.00
更改为所需的格式,例如0.0000
表示四位小数。 请注意,这仅适用于 C 列。
如果要更改所有列的格式,请修改worksheet.set_column('C:C', None, format1)
,例如
worksheet.set_column(0, 3, None, format1)
其中 0 第一列和 3 最后一列。
我是新来的,你能用这个四舍五入到小数点后两位吗?
df['col_name'].apply(lambda x: round(x, 2))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.