簡體   English   中英

使用熊貓讀取 sas 文件時出現 ValueError

[英]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

要回答您的問題,您有兩種選擇:

  1. 等到pandas發布 1.5 版,更新到該版本,然后read_sas應該可以按預期工作。 自從你問起你已經等了一段時間了,所以我懷疑這會沒事的。
  2. 請改用 python 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM