我正在尝试使用pandas处理SAS数据集。数据集的格式为sas7bdat
,编码为iso-8859-15
。数据集长230,000行,宽1300列。
我使用以下命令将数据加载到pandas中:
pandas.read_sas('my_file.sas7bdat', format='sas7bdat', encoding='iso-8859-15')
这对大多数值都很有效,但是,有些值会被错误地读入。错误读入的值通常出现沿着同一行。
例如,假设column 1
的期望值是000
,我得到的是0-0
。然后,沿着同一行,另一列的期望值可能是-000003
,但pandas中的值是00003-0
。
我完全不知道为什么会发生这种情况。我试着到处搜索这个问题,但找不到答案。我已经将数据集重新加载到SAS中,看看是否是SAS导出的错误,但SAS读取数据很好。
当我将数据集直接加载到原始字节中时,这些更改仍然存在,这表明这不是编码的问题。
以前有没有其他人遇到过这个问题?有没有一个已知的pandas.read_sas
错误阅读入数据的问题?
1条答案
按热度按时间db2dz4w81#
我也有同样的问题,除了我的sas文件是拉丁语1编码的。我还看到一些行的数据是好的,而其他行的多个列将是不正确的(例如,应该是99999999,但Python显示99962328)。作为一种解决方法,我使用了这个
我使用的是pandas 1.4.1,所以这可能与一个已知的bug(https://github.com/pandas-dev/pandas/issues/31243)有关;但是,我看到重复字符的截断仅发生在21个字符处,而不是32个字符处