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

标签 python r pandas spss rpy2

我希望使用 pandas 处理 SPSS 文件 (.sav)。在没有 SPSS 程序的情况下,转换为 .csv 后的典型文件如下所示:

enter image description here

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

enter image description here

当我将文件导入 pandas 时:

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

如何维护标签?

最佳答案

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

关于python - 如何在通过 rpy 将 SPSS 文件(.sav)导入 pandas 时保留标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36287936/

相关文章:

c++ - 转换数据包数据的 Python 和 C++ 套接字

r - 参数列数不匹配

python - 表/df 列之间的反向分组关系

python - 连接多个数据帧时保留原始分类映射

python - 如何从一列中的所有数字中删除\xa3?

python - F2Py:使用通过 Python 调用的 Fortran 中的可分配数组

python - 通过矢量化提高 np.irr 函数的性能

python - 如何使用 AND 运算符过滤包含特定字符串值的行

r - 通过列名称的复杂模式子集数据框

r - skimr:如何获取前 3 个和后 3 个值?