2016-10-19 8 views
5

मेरे पास ऐसा टेक्स्टफाइल में एक डेटासेट है जो इस तरह दिखता है।पांडस का उपयोग करके एक टेक्स्ट फ़ाइल पढ़ना जहां कुछ पंक्तियों में खाली तत्व हैं?

0 0CF00400 X  8 66 7D 91 6E 22 03 0F 7D  0.021650 R 
    0 18EA0080 X  3 E9 FE 00       0.022550 R 
    0 00000003 X  8 D5 64 22 E1 FF FF FF F0  0.023120 R 

मैं इस का उपयोग कर

file_pandas = pd.read_csv(fileName, delim_whitespace = True, header = None, engine = 'python') 

पढ़ा और उत्पादन

0 0 0CF00400 X 8 66 7D 91  6E 22 03 0F 7D 0.02165 
    1 0 18EA0080 X 3 E9 FE 0 0.022550 R None None None  NaN 
    2 0 00000003 X 8 D5 64 22  E1 FF FF FF F0 0.02312 

मिला लेकिन मैं इस

0 0 0CF00400 X 8 66 7D 91  6E 22 03 0F 7D 0.021650 R 
    1 0 18EA0080 X 3 E9 FE 00         0.022550 R 
    2 0 00000003 X 8 D5 64 22  E1 FF FF FF F0 0.023120 R 

के रूप में पढ़ा मैं delim_whitespace = True को दूर करने और जगह की कोशिश की है चाहता हूँ यहके साथलेकिन यह ऊपर दिखाए गए आउटपुट में पहले चार कॉलम को जोड़ता है, लेकिन यह बाकी डेटा को सही तरीके से पार्स करता है, जिसका अर्थ है कि शेष कॉलम मूल txt फ़ाइल (व्हाइट्स स्पेस में NaN मानों को छोड़कर) की तरह थे।

मुझे यकीन नहीं है कि यहां से कैसे आगे बढ़ना है।

साइड नोट: 00 को केवल 0 के रूप में पार्स किया जा रहा है। क्या इसके बजाय 00 प्रदर्शित करने का कोई तरीका है?

+1

यह एक निश्चित चौड़ाई फ़ाइल की तरह लग रहा है, तो आप कोशिश कर सकते हैं 'read_fwf' भी आप टैब की क्या ज़रूरत है या यहाँ जगहें? '00' को संरक्षित करने के लिए आपको 'dtype = np.object' – EdChum

उत्तर

8

ऐसा लगता है आपके डेटा की तरह निश्चित चौड़ाई कॉलम है, तो आप pandas.read_fwf() कोशिश कर सकते हैं:

from io import StringIO 
import pandas as pd 

df = pd.read_fwf(StringIO("""0 0CF00400 X  8 66 7D 91 6E 22 03 0F 7D  0.021650 R 
0 18EA0080 X  3 E9 FE 00       0.022550 R 
0 00000003 X  8 D5 64 22 E1 FF FF FF F0  0.023120 R"""), 
       header = None, widths = [1,12,2,8,4,4,4,4,4,4,4,4,16,2]) 

enter image description here

+0

पास करने की आवश्यकता होगी मैंने आपकी विधि की कोशिश की लेकिन कॉलम 4-11 में मान सभी को व्हाइटस्पेस से अलग किया गया। 6 6, 6 7, आदि की तरह। हालांकि, चौड़ाई तर्क के बिना केवल 'read_fwf() 'का उपयोग करके वास्तव में अच्छा काम किया! मेरे पास '00' के रूप में दिखाए गए' 00' का मुद्दा है। मैंने 'dtype = np.object' की कोशिश की लेकिन' dtype' पायथन इंजन के साथ समर्थित नहीं है। कोई सुझाव? –

+1

कॉलम से 'int' में परिवर्तित होने से बचने के लिए 'कन्वर्टर्स = {6: str}' तर्क का उपयोग करें, इसे 'df = pd.read_fwf (file_name, header = none, converters = {6: str})' – Psidom

+0

था केवल उस तर्क को आजमा सकते हैं, यह काम करता है! धन्यवाद! –

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