【发布时间】:2018-07-16 13:13:08
【问题描述】:
我想我一直在搜索,但如果我遗漏了什么 - 请告诉我。
我正在尝试导入 CSV 文件,其中所有非数值都用“. 我遇到了一个问题:
df = pd.read_csv(file.csv)
CSV 示例:
"Business focus","Country","City","Company Name"
"IT","France","Lyon","Societe General"
"Mining","Russia","Moscow","Company "MoscowMining" Owner1, Owner2, Owner3"
"Agriculture","Poland","Warsaw","Company" Jankowski,A,B""
由于其中包含多个引号和逗号,在这种情况下,pandas 看到的列数超过了 4 列(例如 5 或 6)。
我已经试过玩了
df = pd.read_csv(file.csv, quotechar='"', quoting=2)
得到了
ParserError: Error tokenizing data (...)
有效的方法是跳过坏行
error_bad_lines=False
但我宁愿以某种方式考虑所有数据,而不是忽略它。
非常感谢您的帮助!
【问题讨论】:
-
对我来说似乎是格式错误的 CSV 文件。这个文件的来源是什么?
-
您可以通过转义作为值的一部分的 " 来解决此问题。您最好的选择可能是假设 " 后跟逗号或换行符,如果它是一个值的结束。那么你可以做一个正则表达式,比如 s/"([^,\n])/""$1/g
-
不幸的是,我收到了该文件,并且无法影响某些外部系统如何准备它