GÜNCELLEME: Yazma sırasında yanıt doğruydu ve kayan nokta hassasiyeti hala varsayılan olarak to_csv / read_csv ile elde ettiğiniz bir şey değildir (kesinlik-performans değiş tokuşu; varsayılanlar performans lehinedir).
Günümüzde var hazır argüman ve mevcut argümanfloat_format
pandas.DataFrame.to_csv
float_precision
pandas.from_csv
.
Sorunu daha iyi anlamak için orijinali okumaya değer.
Pandalarda, sadece "to_csv" işlevinde değil, "read_csv" de de bir hataydı. Kayan nokta aritmetiğinin , programcıdan biraz özen isteyen bir konu olduğu doğru olmasına rağmen, bu genel bir kayan nokta sorunu değildir . Aşağıdaki bu makale bu konuyu biraz aydınlatmaktadır:
http://docs.python.org/2/tutorial/floatingpoint.html
"Sorunu" gösteren klasik bir tek satırlık çizgi ...
>>> 0.1 + 0.1 + 0.1
0.30000000000000004
... beklendiği gibi 0,3 göstermeyen. Öte yandan, hesaplamayı sabit nokta aritmetiği kullanarak gerçekleştirirseniz ve yalnızca son adımda kayan nokta aritmetiğini kullanırsanız , beklediğiniz gibi çalışacaktır. Bunu gör:
>>> (1 + 1 + 1) * 1.0 / 10
0.3
Eğer bu sorunu umutsuzca aşmanız gerekiyorsa, tüm rakamları tamsayı olarak içeren başka bir CSV dosyası oluşturmanızı tavsiye ederim, örneğin 100, 1000 ile çarpma veya uygun olan başka bir faktör. Başvurunuzun içinde, CSV dosyasını her zamanki gibi okuyun ve bu tam sayı rakamlarını geri alacaksınız. Daha sonra bu değerleri, daha önce çarptığınız çarpana bölerek kayan noktaya dönüştürün.