![](/img/trans.png)
[英]Pandas: 'read_csv' function from AWS S3 bucket sometimes returns “FileNotFoundError”
[英]Error using Pandas read_csv from S3 bucket in AWS lambda function - Expected 1 fields in line 5, saw 2
Reading a csv file from an S3 bucket using Pandas read_csv in AWS lambda function and keep seeing a tokenisation error relating to the contents of the csv.
前 5 行如下(從文本編輯器粘貼)
ItemID | NameID | Users | Days | Pricing | Expiration | Status
-----------------------------------------------------------------------
370915293| aaaaqqq.abc | 0 | 0 | $12 | 05/10/2021 11:44| Ran
371192969| aaacns.abc | 7 | 0 | $12 | 05/08/2021 09:34| Ran
370905229| aaamix.abc | 0 | 0 | $12 | 05/07/2021 10:32| Ran
371459366| aaapdf.abc | 28 | 0 | $12 | 05/11/2021 12:55| Ran
當我使用命令時:
rawdata = pd.read_csv(io.BytesIO(obj['Body'].read()),sep=',')
我看到以下錯誤:
標記數據時出錯。 C 錯誤:第 5 行中應有 1 個字段,看到 2
瀏覽了 csv 文件后,我並沒有立即明白為什么第 5 行有問題。
在任何其他環境(Jupyter 筆記本、Pycharm 等)中打開文件都不會出現任何問題。 該問題似乎特定於此特定文件的 AWS/Lambda 函數解釋。
我還嘗試附加 header=False 和 header=0 來強制識別 7 個標題,但這似乎並不能緩解問題。
我還嘗試按照之前的建議將解析引擎指定為engine = 'python'
,但這引入了一個不同的錯誤,如下所示。
pandas.errors.ParserError: ',' 預計在 '"' 之后
研究使我明白我可以使用 skiprows=x 跳過/忽略錯誤的行,但我不想訴諸於此,因為我想了解和糾正這個問題。
我還能做些什么來識別和隔離問題嗎?
謝謝
幾次出現此錯誤,通過使用這樣的 lineterminator 解決了它。 默認值為\r\n。 我認為 AWS 改變了存儲值的方式。
rawdata = pd.read_csv(io.BytesIO(obj['Body'].read()),sep=',', lineterminator='\n')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.