繁体   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