2016-03-29 9 views
5

मैं pandas का उपयोग कर एक एसपीएसएस फाइलों (.sav) पर काम करना चाहता हूं।SPSS फ़ाइल (.sav) को rpy के माध्यम से पांडा में आयात करते समय लेबल को संरक्षित कैसे करें?

enter image description here

क्या पहले दो पंक्तियों को दर्शाता है की जांच (मैं SPSS पता नहीं है) पर, ऐसा लगता है: SPSS कार्यक्रम के अभाव में, यहाँ जब .csv में परिवर्तित की तरह क्या एक विशिष्ट फ़ाइल लग रहा है कि पहली पंक्ति में Label एस है, जबकि दूसरी पंक्ति में VarName एस है।

enter image description here

जब मैं पांडा में फ़ाइल इस प्रकार लाने:

import pandas.rpy.common as com 

def savtocsv(filename): 
    w = com.robj.r('foreign::read.spss("%s", to.data.frame=TRUE)' % filename) 
    w = com.convert_robj(w) 
    return w 

और फिर एक सिर (करते हैं), पहली पंक्ति (लेबल) याद आ रही है:

enter image description here

लेबल कैसे बनाए रखा जा सकता है?

उत्तर

3

लेबल read.spss समारोह से लौट रहे वस्तु की variable.labels विशेषता में जमा हो जाती है।

आप निम्न के साथ चर लेबल प्राप्त कर सकते हैं:

import pandas.rpy.common as com 

def get_labels(filename): 
    w = com.robj.r('attr(foreign::read.spss("%s"), "variable.labels")' % filename) 
    w = com.convert_robj(w) 
    return w 

आप अपने dataframe के स्तंभ नाम के रूप में लेबल सेट करना चाहते हैं:

import pandas.rpy.common as com 

def savtocsv(filename): 
    w = com.robj.r('foreign::read.spss("%s", to.data.frame=TRUE)' % filename) 
    cols = list(com.robj.r("attr")(w, "variable.labels")) 
    w = com.convert_robj(w) 
    w.columns = cols 
    return w 
+0

बढ़िया है, कि क्या करना है लगता है मैं ज़रूरत है, धन्यवाद। मुझे लगता है कि मैं फिर पांडा के साथ किसी को कॉलम हेडर होने के लिए वेरनाम मानों को बदल सकता हूं। लेकिन क्या यह संभव है कि रूपांतरण ** और ** में एक ही समय में लेबल शामिल हों (एक कॉल 'com.robj.r() '), पांडा में आगे बढ़ने के लिए हाथों को बचाने के लिए? – Pyderman

+1

फ़ाइल को एक बार पढ़ना संभव है और लौटने वाली वस्तु पर विशेषताओं को प्राप्त करना संभव है, लेकिन मुझे लगता है कि एक और आर कॉल की आवश्यकता होगी। कृपया अद्यतन देखें। – ayhan

+0

अच्छी तरह से काम करता है, धन्यवाद agin। – Pyderman

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

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