अद्यतन: उत्तर लेखन के समय सटीक था, और फ़्लोटिंग पॉइंट सटीकता अभी भी कुछ ऐसी चीज़ नहीं है जो आप डिफ़ॉल्ट रूप से 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
यदि आपको इस समस्या को दरकिनार करने की आवश्यकता है, तो मैं आपको एक और सीएसवी फ़ाइल बनाने की सलाह देता हूं जिसमें पूर्णांक के रूप में सभी आंकड़े हैं, उदाहरण के लिए 100, 1000 या अन्य कारक से गुणा करना जो सुविधाजनक हो। अपने एप्लिकेशन के अंदर, हमेशा की तरह CSV फ़ाइल पढ़ें और आपको उन पूर्णांक आंकड़े वापस मिल जाएंगे। फिर उन मूल्यों को फ़्लोटिंग पॉइंट में परिवर्तित करें, उसी कारक से विभाजित करें जिसे आपने पहले गुणा किया है।