2015-10-29 8 views
5

को छोड़कर पांडस सभी का उपयोग करता है मेरे पास एक सीएसवी फ़ाइल है, क्या usecolsread_csv का उपयोग करते समय अंतिम कॉलम को छोड़कर सभी कॉलम लेना संभव है, प्रत्येक स्तंभ की आवश्यकता के बिना।अंतिम

उदाहरण के लिए, यदि मेरे पास 13 कॉलम फ़ाइल है, तो मैं usecols=[0,1,...,10,11] कर सकता हूं। usecols=[:-1] करना मुझे वाक्यविन्यास त्रुटि देगा?

क्या कोई और विकल्प है? मैं pandas 0.17

उपयोग कर रहा हूँ
+0

क्यों न केवल एक पंक्ति में पढ़ा जाए, कॉलम की सूची प्राप्त करें और फिर अंतिम प्रविष्टि को छोड़ दें? – EdChum

उत्तर

4

तुम बस nrows=1 का उपयोग कर कॉलम प्राप्त करने के लिए एक पंक्ति पढ़ सकते हैं और उसके बाद पूर्ण सीएसवी पहले पढ़ने से स्तंभ सरणी टुकड़ा करने की क्रिया द्वारा पिछले col लंघन में फिर से पढ़ें:

cols = pd.read_csv(file, nrows=1).columns 
df = pd.read_csv(file, usecols=cols[:-1]) 
+0

क्या यह एकमात्र विकल्प है? ऐसा लगता है कि मुझे प्रत्येक फाइल के लिए एक लाइन जोड़नी होगी। अधिकांश में अलग-अलग कॉलम होते हैं, इसलिए मैं उसी 'cols' चर का उपयोग नहीं कर सकता। – Leb

+0

ऐसा नहीं है कि मैं सोच सकता हूं, आपको हमेशा सीएसवी को शुरुआत में और उस पार्स से पार्स करने की आवश्यकता है, फिर आप गतिशील रूप से निर्धारित कर सकते हैं कि कौन से कोल्स का उपयोग करना है, यह ऐसा कुछ नहीं है जो – EdChum

+0

में बनाया गया है, धन्यवाद, एक आखिरी सवाल। 'Usecols = [: - 1]' करते समय यह वाक्यविन्यास त्रुटि क्यों देता है। क्या वह अजगर या पांडा से आ रहा है? – Leb

1

संस्करण 0.20 से शुरूपांडा में विधि एक कॉल करने योग्य फ़िल्टर स्वीकार करता है, यानी lambda अभिव्यक्ति। इसलिए अगर आप स्तंभ का नाम पता है कि तुम छोड़ आप इस प्रकार कर सकते हैं चाहते हैं:

columns_to_skip = ['foo','bar'] 
df = pd.read_csv(file, usecols=lambda x: x not in columns_to_skip) 

यहाँ प्रलेखन reference है।