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