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

Pyd*_*man 8 python r spss rpy2 pandas

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

在此输入图像描述

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

在此输入图像描述

当我将文件带入熊猫时:

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
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

如何维护标签?

ayh*_*han 6

sav文件中的标签存储在函数variable.labels返回对象的属性中read.spss.

您可以使用以下内容获取变量标签:

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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)