如何在通过 rpy 将 SPSS 文件 (.sav) 导入 pandas 时保留标签?
How to preserve Labels when SPSS file (.sav) imported into pandas via rpy?
我希望使用 pandas
处理 SPSS 文件 (.sav)。在没有 SPSS 程序的情况下,转换为 .csv 后的典型文件如下所示:
调查前两行的含义(我不知道SPSS),似乎第一行包含Label
s,而第二行包含VarName
s .
当我将文件导入 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)不见了:
如何维护标签?
- 参考:Is there a Python module to open SPSS files?
- Python: 2.7.10
- Pandas: 0.17.1
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
我希望使用 pandas
处理 SPSS 文件 (.sav)。在没有 SPSS 程序的情况下,转换为 .csv 后的典型文件如下所示:
调查前两行的含义(我不知道SPSS),似乎第一行包含Label
s,而第二行包含VarName
s .
当我将文件导入 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)不见了:
如何维护标签?
- 参考:Is there a Python module to open SPSS files?
- Python: 2.7.10
- Pandas: 0.17.1
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