2012-11-05 15 views
6

मान लीजिए मैं 400 कॉलम के साथ एक csv फ़ाइल है में csv फ़ाइल से केवल विशिष्ट स्तंभ लोड करने के लिए। मैं पूरी फ़ाइल को डेटाफ्रेम में लोड नहीं कर सकता (स्मृति में फिट नहीं होगा)। हालांकि, मैं केवल 50 कॉलम चाहता हूं, और यह स्मृति में फिट होगा। मुझे ऐसा करने के लिए पांडस रास्ते में कोई भी निर्मित नहीं दिख रहा है। आपकी क्या सलाह है? मैं PyTables इंटरफेस, या pandas.io.sql का उपयोग कर के लिए खुला रहा हूँ।कैसे एक DataFrame

सबसे अच्छा हालत में होगा की तरह एक समारोह: pandas.read_csv (...., कॉलम = [ 'नाम', 'युग', ..., 'आय'])। अर्थात। हम कॉलम नामों (या संख्याओं) की एक सूची पास करते हैं जिन्हें लोड किया जाएगा।

उत्तर

3

अभी ऐसा करने के लिए कोई डिफ़ॉल्ट तरीका नहीं है। मैं फ़ाइल बेडौल और इस पर पुनरावृत्ति और कॉलम आप नहीं चाहते की निकालने का सुझाव देते हैं। तो pd.concat([x.ix[:, cols_to_keep] for x in pd.read_csv(..., chunksize=200)])

16

इयान, मैंने usecols विकल्प लागू किया जो ठीक वर्णन करता है। यह आगामी पांडा 0.10 में होगा; विकास संस्करण जल्द ही उपलब्ध होगा।


0.10 के बाद से, आप

df = pd.read_csv(...., usecols=['name', 'age',..., 'income']) 
तरह usecols उपयोग कर सकते हैं
संबंधित मुद्दे