SPSS文件(.sav)通过rpy导入pandas时如何保留标签?

时间:2016-03-29 14:58:51

标签: python r pandas spss rpy2

我希望使用pandas处理SPSS文件(.sav)。在没有SPSS程序的情况下,这是转换为.csv时典型文件的样子:

enter image description here

在调查前两行的含义(我不知道SPSS)时,似乎第一行包含Label s,而第二行包含VarName s

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

然后执行head(),第一行(Label)丢失:

enter image description here

如何维护标签?

1 个答案:

答案 0 :(得分:6)

sav文件中的标签存储在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

如果要将标签设置为数据框的列名:

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