python-3.x - pandas.errors.ParserError: ',' 预计在 '"' 之后
问题描述
我正在尝试从 Kaggle 中读取此数据集:Amazon sales rank data for print and kindle books
该文件amazon_com_extras.csv
有一个名为“Title”的列,有时包含一个逗号“,”因此此 .csv 中的所有字段都用引号引起来:
"ASIN","GROUP","FORMAT","TITLE","AUTHOR","PUBLISHER"
"022640014X","book","hardcover","The Diversity Bargain: And Other Dilemmas of Race, Admissions, and Meritocracy at Elite Universities","Natasha K. Warikoo","University Of Chicago Press"
我已经阅读了与此问题相关的其他问题,但没有一个能解决它。例如,我尝试过:
df = pd.read_csv("amazon_com_extras.csv",engine="python",sep=',')
df = pd.read_csv("amazon_com_extras.csv",engine="python",sep=',',quotechar='"')
但似乎没有任何效果。我正在使用 Python 3.7.2 和 pandas 0.24.1。
解决方案
这发生在您身上,因为文档中的某些字段在引用的文本中包含未转义的引号。
我不知道有一种方法可以指示 csv 解析器在不进行预处理的情况下处理它。
如果您不关心这些列,则可以使用
pd.read_csv("amazon_com_extras.csv", engine="python", sep=',', quotechar='"', error_bad_lines=False)
这将禁止引发异常,但会删除受影响的行(您将在控制台中看到)。
这种行的一个例子:
"1405246510","book","hardcover",""Hannah Montana" Annual 2010","Unknown","Egmont Books Ltd"
注意引号。
相反,更标准的 csv 方言会呈现:
1405246510,"book","hardcover","""Hannah Montana"" Annual 2010","Unknown","Egmont Books Ltd"
例如,您可以使用 Libreoffice 加载文件并再次将其重新保存为 CSV 以获得有效的 CSV 方言或使用其他预处理技术。
推荐阅读
- python-3.7 - 文件“E:\python Project\whatapp_reponse\whatapp\main.py”,第 9 行,在
x = position1[0] TypeError: 'None Type' 对象不可下标 - node.js - 在 MongoDB 中使用带有 Socket.io 的 Change Stream 时,“更改”被多次触发
- .net - 数据库的EFcore日志查询
- python - 格式化 SQL 查询以接受引用值列表
- javascript - 图像幻灯片不适用于以下代码
- vue.js - @vue/cli 4.5.13:热重载不起作用
- python - nidaqmx python在一定时间内计数脉冲
- javascript - “在控制器上未找到公共操作方法‘索引’”错误,即使我从未提及“索引”并提供了控制器的特定路径
- java - 读取 file.txt 并取其中的 int 值,然后将它们放入 2D 数组中用于数独
- c# - 带 DI 的 Newtonsoft 转换器