我在csv原始数据文件中遇到了EM Dash的问题,导致Pandas无法读取CSV。
我在
下面运行了一些变体 datalocation = filepath
df = pd.read_csv(datalocation)
收到错误:' UnicodeDecode错误:' ascii'编解码器无法解码位置4中的字节0xef:序数不在范围内(128)'
其他变体包括
df = pd.read_csv(datalocation, encoding='utf-8')
df = pd.read_csv(datalocation, encoding='utf-16')
收到错误:' UnicodeDecodeError:' utf8'编解码器不能解码位置0中的字节0xff:无效的起始字节'
df = pd.read_csv(datalocation, na_values=['—'])
收到错误:'行包含NULL字节'
如果成功,数据框应类似于下面的示例表。
+---------+------+----------+--------+
| Country | Date | Delivery | Region |
+---------+------+----------+--------+
| a | — | 10 | foo |
| b | — | 30 | — |
| c | 2 | —50 | foo— |
| — | — | 20 | —bar |
| a | — | 40 | bar— |
| — | — | —6— | bar |
| b | — | 90— | foo |
| c | — | 70 | bar |
| a | — | 80 | foo |
| c | — | 100 | foo— |
+---------+------+----------+--------+
在花费时间研究SO上的资源之后,我明白它与Unicode / UTF-8 / ASCII之间的某些冲突有关。
有没有办法在运行> pd.read_csv'之前删除所有EM Dash?请记住,我不知道csv原始文件中所有EM Dash的精确单元格。
答案 0 :(得分:0)
最后想出了如何通过在读取之前将数据集预处理成新文件来做到这一点!希望与遇到此问题的任何人分享该方法。
sha1sum myfile.zip
希望这可以帮助任何遇到数据框中有问题字符的人。