อัปเดต:คำตอบนั้นถูกต้องในขณะที่เขียนและความแม่นยำของจุดลอยตัวยังไม่ใช่สิ่งที่คุณจะได้รับโดยค่าเริ่มต้นด้วย to_csv / read_csv (การแลกเปลี่ยนประสิทธิภาพความแม่นยำค่าเริ่มต้นเป็นค่าเริ่มต้นสำหรับประสิทธิภาพ)
ปัจจุบันมีอาร์กิวเมนต์ใช้ได้สำหรับการและอาร์กิวเมนต์ใช้ได้สำหรับfloat_format
pandas.DataFrame.to_csv
float_precision
pandas.from_csv
ต้นฉบับยังคงควรค่าแก่การอ่านเพื่อให้เข้าใจปัญหาได้ดีขึ้น
มันเป็นข้อบกพร่องในแพนด้าไม่เพียง แต่ในฟังก์ชัน "to_csv" เท่านั้น แต่ใน "read_csv" ด้วย ไม่ใช่ปัญหาเรื่องทศนิยมทั่วไปแม้ว่าจะเป็นเรื่องจริงที่ว่าเลขคณิตลอยตัวเป็นเรื่องที่ต้องการการดูแลจากโปรแกรมเมอร์ บทความด้านล่างนี้ชี้แจงเรื่องนี้เล็กน้อย:
http://docs.python.org/2/tutorial/floatingpoint.html
หนึ่งซับคลาสสิกที่แสดง "ปัญหา" คือ ...
>>> 0.1 + 0.1 + 0.1
0.30000000000000004
... ซึ่งไม่แสดง 0.3 ตามที่คาดหวัง ในทางกลับกันถ้าคุณจัดการการคำนวณโดยใช้เลขคณิตจุดคงที่และเฉพาะในขั้นตอนสุดท้ายที่คุณใช้เลขคณิตลอยตัวมันจะได้ผลตามที่คุณคาดหวัง ดูนี่:
>>> (1 + 1 + 1) * 1.0 / 10
0.3
หากคุณต้องการหลีกเลี่ยงปัญหานี้อย่างยิ่งเราขอแนะนำให้คุณสร้างไฟล์ CSV อื่นซึ่งมีตัวเลขทั้งหมดเป็นจำนวนเต็มตัวอย่างเช่นการคูณด้วย 100, 1000 หรือปัจจัยอื่น ๆ ซึ่งจะทำให้สะดวก ภายในแอปพลิเคชันของคุณให้อ่านไฟล์ CSV ตามปกติและคุณจะได้รับตัวเลขจำนวนเต็มกลับคืนมา จากนั้นแปลงค่าเหล่านั้นเป็นทศนิยมหารด้วยปัจจัยเดียวกับที่คุณคูณก่อนหน้านี้