为什么pandas.read_sas()会随机出错?

uttx8gqw  于 2023-04-10  发布在  其他
关注(0)|答案(1)|浏览(131)

我正在尝试使用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错误阅读入数据的问题?

db2dz4w8

db2dz4w81#

我也有同样的问题,除了我的sas文件是拉丁语1编码的。我还看到一些行的数据是好的,而其他行的多个列将是不正确的(例如,应该是99999999,但Python显示99962328)。作为一种解决方法,我使用了这个

import sas7bdat
from sas7bdat import *
with SAS7BDAT(file) as reader:
      my_df = reader.to_data_frame()

我使用的是pandas 1.4.1,所以这可能与一个已知的bug(https://github.com/pandas-dev/pandas/issues/31243)有关;但是,我看到重复字符的截断仅发生在21个字符处,而不是32个字符处

相关问题