簡體   English   中英

使用 AWS lambda function 中的 S3 存儲桶中的 Pandas read_csv 時出錯 - 預計第 5 行中有 1 個字段,看到 2

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

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