我正在尝试加载一个大的csv文件,3,715,259行。 我自己创建了这个文件,有9个字段用逗号分隔。
这是错误:
df = pd.read_csv("avaya_inventory_rev2.csv", error_bad_lines=False)
Skipping line 2924525: expected 9 fields, saw 11
Skipping line 2924526: expected 9 fields, saw 10
Skipping line 2924527: expected 9 fields, saw 10
Skipping line 2924528: expected 9 fields, saw 10
这对我没有意义,我使用以下方法检查了违规行:
sed -n "2924524,2924525p" infile.csv
我无法列出输出,因为它们包含客户端的专有信息。我会尝试合成一个有意义的替代品。
第2924524行和第2924525行看起来与我有相同数量的字段。
另外,我能够将同一个文件加载到mySQL表中而没有错误。
create table Inventory (path varchar (255), isText int, ext varchar(5), type varchar(100), size int, sloc int, comments int, blank int, tot_lines int);
我对mySQL了解不足以了解为什么这可能或可能不是一个有效的测试,以及为什么pandas会因加载相同的文件而产生不同的结果。
TIA!
'''更新''':我试着用engine ='python'阅读:
Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?
当我创建这个csv时,我正在使用我编写的shell脚本。我使用重定向>>将行添加到文件中
我尝试了建议的解决方法:
input = open(input, 'rU')
df.read_csv(input, engine='python')
回到同样的错误:
ValueError: Expected 9 fields in line 5157, saw 11
我猜这与我的csv创建脚本以及我如何处理有关 引用那个。我不知道如何进一步调查这一点。
我在vim中打开了csv输入文件,在第5157行打开了一个^M
谷歌称它为Windows CR。
好的......我离我更近了,虽然我有点怀疑这样的事情并在csv输入上使用了dos2unix
。
我使用vim删除了^M
,并重新运行了同样的错误
11个领域。但是,我现在可以看到我刚才看到的11个领域
9.有v
可能是某种Windows持有吗?
摘要:有人认为用fobar.sh,v
所以我的探查器并没有搞砸它只是一个名字怪异......加上来自窗口的随机\ cr \ lf偷偷进来....
干杯