首页 > 解决方案 > Spyder,变量浏览器,xpt

问题描述

我是从 SAS 背景来到 Python 的。

我已经使用以下方法将 SAS 版本 5 传输文件 (XPT) 导入 python:

df = pd.read_sas(r'C:\mypath\myxpt.xpt')

该文件是一个简单的 SAS 传输文件,从使用以下内容创建的 SAS 数据集转换而来:

DATA myxpt;
  DO i = 1 TO 10;
    y = "XXX";
    OUTPUT;
  END;
RUN;

该文件正确导入,我可以使用以下方法查看内容:

print(df)

显示数据框打印的屏幕截图

但是,当我使用变量资源管理器查看文件时,所有字符列都显示为空白。

显示通过变量资源管理器查看的数据框的屏幕截图

我尝试将其作为 sas 数据集而不是传输文件读取并将其导入 Python,但遇到了同样的问题。

我还尝试在包含字符列的 python 中创建一个数据框,并且它在变量资源管理器中正确显示。

有什么建议吗?

提前致谢。

标签: pythonpandassasspyder

解决方案


Y 列是一列二进制字符串。您必须先对其进行解码。变量资源管理器无法猜测正确的编码,并且显然不显示二进制字符串。如果您不知道编码,您将不得不猜测。试着df['utf8']=df.Y.str.decode('utf8')看看这些信息是否有意义。

正如您所指出的,可以在导入函数中指定编码:

df = pd.read_sas(r'C:\mypath\myxpt.xpt', encoding='utf8')

作为旁注,您应该始终了解并最好明确使用的编码,以避免严重的麻烦。

有关所有可用编码和别名的列表,请查看此处


推荐阅读