[英]ValueError when reading a sas file with pandas
pandas.read_sas()打印我無法刪除的回溯消息。 問題是它為正在讀取的每一行打印消息,所以當我嘗試讀取整個文件時,它只會凍結打印太多。
我從其他stackoverflow答案中嘗試過
import warnings
warnings.simplefilter(action='ignore')
和
warnings.filterwarnings('ignore')
和
from IPython.display import HTML
HTML('''<script>
code_show_err=false;
function code_toggle_err() {
if (code_show_err){
$('div.output_stderr').hide();
} else {
$('div.output_stderr').show();
}
code_show_err = !code_show_err
}
$( document ).ready(code_toggle_err);
</script>
To toggle on/off output_stderr, click <a
href="javascript:code_toggle_err()">here</a>.''')
但沒有任何效果。
它打印的消息是:
-------------------------------------------------- ------------------------- ValueError Traceback (最近一次調用最后) pandas\io\sas\sas.pyx in pandas.io.sas._sas .rle_decompress()
ValueError:意外的非零 end_of_first_byte
異常被忽略:'pandas.io.sas._sas.Parser.process_byte_array_with_data' Traceback(最近一次調用最后):文件“pandas\io\sas\sas.pyx”,第 29 行,在 pandas.io.sas._sas。 rle_decompress ValueError:意外的非零 end_of_first_byte
正如回溯中突出顯示的那樣,該錯誤是由pandas
RLE 解壓縮實現中的錯誤引起的,該錯誤在使用 CHAR (RLE) 壓縮導出 SAS 數據集時使用。
請注意為此主題創建的pandas
問題: https ://github.com/pandas-dev/pandas/issues/31243
pandas
針對read_sas
中的這個 bug 實現的解決方案包含在以下 Pull Request 中,它是 1.5 版里程碑的一部分,在回答時尚未發布: https ://github.com/pandas-dev/pandas /拉/47113
要回答您的問題,您有兩種選擇:
pandas
發布 1.5 版,更新到該版本,然后read_sas
應該可以按預期工作。 自從你問起你已經等了一段時間了,所以我懷疑這會沒事的。sas7bdat
庫 ( https://pypi.org/project/sas7bdat/ ),然后轉換為pandas
DataFrame: from sas7bdat import SAS7BDAT
df = SAS7BDAT("./path/to/file.sas7bdat").to_data_frame()
在遇到與您完全相同的錯誤之后, sas7bdat
方法對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.