2012-12-05 14 views
6

मैं डेटा विश्लेषण के लिए पेज पायथन से उदाहरणों का पालन कर रहा हूं। विशेष रूप से, 2012 के अध्याय डेटाबेस से अपने अध्याय 9। डेटा एक बड़ी सीएसवी फ़ाइल में है, जिसे अल्पविराम द्वारा सीमित किया गया है। लेकिन फ़ाइल की प्रत्येक पंक्ति में एक अतिरिक्त पिछला डिलीमीटर होता है, जो pandas.read_csv को भ्रमित करने लगता है।पायथन पांडा - पिछला डिलीमीटर भ्रमित read_csv

यह अतिरिक्त डिलीमीटर का इलाज करता है जैसे कि कोई अतिरिक्त कॉलम है। तो हेडर की आवश्यकता के मुकाबले एक और कॉलम है। फिर pandas.read_csv पहला कॉलम पंक्ति लेबल के रूप में लेता है। समग्र प्रभाव यह है कि कॉलम और हेडर अब और गठबंधन नहीं होते हैं - पहला कॉलम पंक्ति लेबल बन जाता है, दूसरा कॉलम पहले हेडर आदि द्वारा नामित किया जाता है।

यह काफी परेशान है। pandas.read_csv सही बात करने के बारे में कोई विचार कैसे है? मुझे एक नहीं मिला।

ग्रेट बुक, बीटीडब्ल्यू।

उत्तर

2

मैं एक GitHub मुद्दा बनाया स्वचालित रूप से इस मुद्दे से निपटने पर एक नजर है करने के लिए:

https://github.com/pydata/pandas/issues/2442

मैं FEC फ़ाइल स्वरूप थोड़ा इस कष्टप्रद issue-- के कारण बदल लगता है कि अगर आप एक यहाँ http://github.com/pydata/pydata-book पोस्ट का उपयोग आपको आशा है कि वह समस्या नहीं होगी।

+0

जानना अच्छा है कि पुस्तक के लिए एक जिथब रेपो है। धन्यवाद, वेस। – edwardw

+0

मैं बस दूसरा यह कहूंगा कि यह समस्या अन्य स्थानों पर होती है; मैंने अभी एनओएए जलवायु साइट से कुछ मौसम डेटा डाउनलोड किया है, और प्रत्येक सीएसवी फ़ाइल के अंत में एक अतिरिक्त कॉमा है। मैं ऊपर सूचीबद्ध एक ही कामकाज के साथ आया था। यह कष्टप्रद है, और मुझे यह समझने में थोड़ी देर लग गई कि read_csv() क्यों काम नहीं कर रहा था। – user2072880

3

ठीक है, एक बहुत ही सरल कामकाज है। जब में csv फ़ाइल को पढ़ने के शीर्षक के एक डमी स्तंभ जोड़ें:

cols = ... 
cols.append('') 
records = pandas.read_csv('filename.txt', skiprows=1, names=cols) 

फिर कॉलम और हेडर पर दोबारा गठबंधन मिलता है।

6

उन सभी के लिए जो अभी भी इसे ढूंढ रहे हैं। वेस ने इस बारे में blogpost लिखा था। समस्या अगर पंक्ति में बहुत अधिक मूल्य है तो इसे पंक्तियों के नाम के रूप में माना जाता है।

यह व्यवहार read_csv के लिए एक विकल्प के रूप में index_col=False की स्थापना द्वारा बदला जा सकता है।