繁体   English   中英

.CSV 错误字符:将编码更改为 UTF-8 pandas / Z23EEEB4347BDD26BDDFC6B7EE9A3B755

[英].CSV wrong characters: Changing encoding to UTF-8 pandas / python

我正在将以下 csv 文件读入 pandas:

样本

但是有些字符是错误的,例如:

大肠杆菌应该是大肠杆菌

Não应该是Não

Weiss Táxi Aéreo应该是Weiss Táxi Aéreo


我试图转换它们:

import pandas as pd

df= pd.read_csv('./ex/sample.csv', sep=';', encoding='latin-1')
df.to_csv('new_file.csv', encoding='utf-8')

但是阅读 new_file.csv 会使单词出错。

如何将此文件中的每个字符转换为正确的字符? 这是某种编码问题,对吗?

只是不要提及任何编码,你会没事的

import pandas as pd

df= pd.read_csv('./ex/sample.csv', sep=';',)
df.to_csv('new_file.csv')

您有一个损坏的文件。 它实际上是在 UTF-8 中编码的,但是在一个坏记录(下)之后,所有行都是;;;;;;;;;;;;;;;;;;;;;;;;;; . 注意encoding_errors='replace'参数需要 pandas 1.3.0 或更高版本:

>>> import pandas as pd
>>> df = pd.read_csv('sample.csv',encoding='utf8',sep=';',encoding_errors='replace')
sys:1: DtypeWarning: Columns (1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,18,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,39,
41,43,44,45,54,55,57) have mixed types.Specify dtype option on import or set low_memory=False.
>>> df
       codigo_reporte   status classificacao_ocorrencia  ... numeroMotor numeroHelice outraAnvParte
0               251.0  Aprovar                Incidente  ...         NaN          NaN           NaN
1               675.0  Aprovar                Incidente  ...           1          NaN           NaN
2               247.0  Aprovar                Incidente  ...         NaN          NaN           NaN
3               248.0  Aprovar                Incidente  ...         NaN          NaN           NaN
4               249.0  Aprovar                Incidente  ...         NaN          NaN           NaN
...               ...      ...                      ...  ...         ...          ...           ...
63775             NaN      NaN                      NaN  ...         NaN          NaN           NaN
63776             NaN      NaN                      NaN  ...         NaN          NaN           NaN
63777             NaN      NaN                      NaN  ...         NaN          NaN           NaN
63778             NaN      NaN                      NaN  ...         NaN          NaN           NaN
63779             NaN      NaN                      NaN  ...         NaN          NaN           NaN

[63780 rows x 58 columns]
>>> df[:105]
     codigo_reporte   status classificacao_ocorrencia  ... numeroMotor numeroHelice   outraAnvParte
0             251.0  Aprovar                Incidente  ...         NaN          NaN             NaN
1             675.0  Aprovar                Incidente  ...           1          NaN             NaN
2             247.0  Aprovar                Incidente  ...         NaN          NaN             NaN
3             248.0  Aprovar                Incidente  ...         NaN          NaN             NaN
4             249.0  Aprovar                Incidente  ...         NaN          NaN             NaN
..              ...      ...                      ...  ...         ...          ...             ...
100           924.0  Aprovar                Incidente  ...           1          NaN             NaN
101          2923.0  Aprovar                Incidente  ...         NaN          NaN  N�?O INFORMADO
102             NaN      NaN                      NaN  ...         NaN          NaN             NaN
103             NaN      NaN                      NaN  ...         NaN          NaN             NaN
104             NaN      NaN                      NaN  ...         NaN          NaN             NaN

[105 rows x 58 columns]

请注意索引 101 的最后一列中的错误数据。这是评论中提到的UnicodeDecodeError的来源。 之后,所有列都是Nan ,原始文件只是带有分号的空字段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM