更新。这是一个已知的错误 - 如果尝试将SAS7bdat读取为可迭代的,pandas.read_sas就会中断。
我在Spyder 3.0.1,Windows 10中的pandas 0.18.1上尝试pandas.read_sas时收到错误。
我在SAS中生成了一个简单的数据集,并以SAS7bdat格式保存:
data basic;
do i=1 to 20;
j=i**2;
if mod(i,2) then type='Even';
else type='Odd';
output;
end;
run;
我们将此数据保存到目录中。
以下代码在Python中运行时成功导入SAS数据集:
import pandas
f=pandas.read_sas('basic.sas7bdat')
以下代码失败:
import pandas
for chunk in pandas.read_sas('basic.sas7bdat', chunksize=1):
pass
生成的错误是
File "C:\Program Files\Anaconda3\lib\site-packages\pandas\io\common.py", line 101, in __next__
raise AbstractMethodError(self)
AbstractMethodError: This method must be defined in the concrete class of SAS7BDATReader
如果我使用选项iterable = True,或者如果我同时使用iterable =和chunksize =,则会产生相同的错误。
相关文档:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sas.html
示例SAS7bdat数据集:http://www.principlesofeconometrics.com/sas.htm。