【发布时间】:2021-10-28 04:52:00
【问题描述】:
我真的很难将一些杂乱的字符串数据从 CSV 文件读入 DataFrame。 我正在使用 Python 3.8.5 和 Pandas 1.1.3
我的 CSV 文件包含整数、日期和以双引号 " 字符结尾的字符串。前几行的示例如下:
像这样使用 pd 作为 Pandas 的实例:
import pandas as pd
import csv
myfilename = 'Input.csv'
myexpenses = pd.read_csv(myfilename, skipinitialspace=True, quotechar='"', quoting=csv.QUOTE_ALL)
一直给我:
ParserError: Error tokenizing data. C error: Expected 37 fields in line 3, saw 42
这显然是因为实际上有 41 个逗号分布在 37 个字段中。我不确定为什么 quotechar 语句没有处理这些。
如何将这些字符串作为单个字段条目处理?
我可能已经尝试过对这个函数进行十几种不同的调整,例如this、this、this 等。
这些包括调整变量,如 quoting=csv.QUOTE_ALL 而没有结果。
我需要涉及 reg 表达式吗?
任何帮助将不胜感激 - 在此先感谢您。
编辑:添加完整代码。对于那些询问的人,这些是 CSV 文件的列和前五个输入行:
日期、员工、项目、费用、说明、单位、成本费率、成本金额、加价百分比、收费金额、计费、计费状态、提交状态、批准人、可报销、已支付、支付日期、收入帐户、费用帐户,类别,国家,采购税率,额外,Tax1 %,Tax2 %,Tax3 %,信用卡,支票号码,供应商账单号码,发票号码,客户,附件,备忘录,创建者,创建于,上次更新者,上次更新了
8/27/2021,"Lastname, Firstname","2021-123 - Bob & Bob (Bob's - New York, NY) Project - Support",Meals:Project Meals,Meals,1,43.64,43.64,0 ,43.64,True,Un Billed,Un-Submitted,,False,False,8/27/2021,,,Meals-Project,US Dollar,0,False,0,0,0,1234-56 - Lastname - 1234,,,,"Bob & Bob, Inc.",1,,"Lastname, Firstname",8/27/2021,"Lastname,名字”,2021 年 8 月 27 日
8/27/2021,"Lastname, Firstname","2021-123 - Bob & Bob (Bob's - New York, NY) Project - Support",Auto Expense:Fuel,Fuel,1,29.41,29.41,0 ,29.41,True,Un Billed,Un-Submitted,,False,False,8/27/2021,,,Fuel,US Dollar,0,False,0,0,0,1234-56 - Lastname - 1234,,,,"Bob & Bob, Inc.",1,,"Lastname, Firstname",8/27/2021,"Lastname,名字”,2021 年 8 月 27 日
8/27/2021,"Lastname, Firstname","2021-123 - Bob & Bob (Bob's - New York, NY) Project - Support",Airfare:Flight,Plane Ticket,1,658.4,658.4,0,658.4,True ,Un Billed,Un-Submitted,,True,False,8/27/2021,,,Flight,US Dollar,0,False,0,0,0,,,,,"Bob & Bob, Inc.",1,,"Lastname, Firstname",8/27/2021,"Lastname, Firstname",8/27/ 2021
8/26/2021,"Lastname, Firstname","2021-123 - Bob & Bob (Bob's - New York, NY) Project - Support",Meals:Project Meals,Meals,1,32.28,32.28,0 ,32.28,True,Un Billed,Un-Submitted,,False,False,8/26/2021,,,Meals-Project,US Dollar,0,False,0,0,0,1234-56 - Lastname - 1234,,,,"Bob & Bob, Inc.",1,,"Lastname, Firstname",8/27/2021,"Lastname,名字”,2021 年 8 月 27 日
8/26/2021,"Lastname, Firstname","2021-123 - Bob & Bob (Bob's - New York, NY) Project - Support",Meals:Project Meals,Meals,1,6.58,6.58,0 ,6.58,True,Un Billed,Un-Submitted,,False,False,8/26/2021,,,Meals-Project,US Dollar,0,False,0,0,0,1234-56 - Lastname - 1234,,,,"Bob & Bob, Inc.",1,,"Lastname, Firstname",8/27/2021,"Lastname,名字”,2021 年 8 月 27 日
【问题讨论】:
-
这能回答你的问题吗? stackoverflow.com/questions/18039057/…
-
你能告诉我们第 3 行吗?可能有一些 UTF 引号字符看起来像 " 但实际上是不同的字符。或者,有没有转义的内部引号,或者它的格式不正确
-
给出前 5 行左右的确切示例以重现确切的错误。提供重现错误所需的完整代码,包括导入。
-
是的,因为错误出现在第 3 行中,因此向我们展示之前行的一部分(它必须有效)并没有帮助。
-
当然,我已经使用经过清理的输入文件添加了这些编辑。唯一的其他代码导入 Pandas 和 CSV,然后设置导入的 CSV 文件名。
标签: python pandas dataframe csv