2013-05-24 10 views
10

फ्लोट करने के लिए इस बड़े csv फ़ाइल से नमूना है:numpy.loadtxt, ValueError: कनवर्ट नहीं कर सके स्ट्रिंग

6.1;6.1;7.2;8.9;5.0; 
8.9;10.0;8.9;6.1;5.0; 

अगर मैं np.loadtxt('test.csv', delimiter=';') के साथ सरणी Numpy करने के लिए इसे पढ़ने की कोशिश मैं:

ValueError: could not convert string to float:

और समझ में नहीं आता क्यों?

+1

आप पीछे है संभालती है; प्रत्येक पंक्ति पर ... इसलिए आपके पास प्रत्येक पंक्ति के अंत में एक खाली स्तंभ है। –

उत्तर

11

आपको लाइनों से पीछे ';' को पीछे हटाना होगा।

एक संभावित समाधान, यदि आप जानते हैं आप 5 कॉलम है:

np.loadtxt('test.csv', delimiter=';', usecols=range(5)) 

या, genfromtext का उपयोग करने के बजाय जो लापता मूल्यों

np.genfromtxt('test.csv', delimiter=';')[:,:-1] 
+0

आप सही हैं, लेकिन मैं कुछ लाइनों के लिए पिछली जगहों को पीछे छोड़ नहीं सकता हूं क्योंकि गुम मूल्य हैं। 'Usecols = range (5)' का उपयोग करके, यदि लाइन ';;' (यानी अंतिम मान गुम है) के साथ समाप्त होता है तो त्रुटि को फिर से उत्पन्न होता है – theta

+1

शायद मुझे CSV पढ़ने के लिए अन्य मॉड्यूल का उपयोग करना चाहिए। मैंने अभी 'पांडा' की कोशिश की, और यह ठीक है, जैसा कि किसी ने उम्मीद की थी, लेकिन ओटीओएच मैं सीएसवी को सरणी में पढ़ने के लिए भारी पैकेज लोड नहीं करना चाहता, और इसे फिर से उपयोग न करें ... – theta

+0

नाह I लगता है कि numpy एक अच्छी पसंद है, वहाँ 'csv' मॉड्यूल है लेकिन यह तारों के लिए अधिक है .. – wim

संबंधित मुद्दे