Python Pandas 数据帧 read_csv UnicodeDecodeError

标签 python csv pandas dataframe unicode-normalization

我有一个 129 MB 的 CSV 文件,其中包含 849,275 行和 18 列。我正在尝试使用 read_csv 将 CSV 文件读入 pandas DataFrame

当我使用 encoding='cp1252' 时:

read_file = pd.read_csv('myfile.csv', encoding='cp1252')

错误很长,但最终在底部这样说:

 UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 41:
 character maps to <undefined>

当我指定:无编码、encoding='utf-8'encoding='utf-8-sig' 时,我得到:

 UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position 65:
 invalid start byte

问题:

我完全可以删除这些有问题的字符。更好的方法是将它们规范化为 127 以下的 ASCII 字符。如何使用 JUST PANDAS 执行此操作?我正在寻找最像 Pandas 的方式(如果存在的话)。

不要矫枉过正这个问题,但这是我确定导致问题的其中一列中字符类型的列表:

Character   Ord
    32
!   33
"   34
#   35
$    36
%   37
&   38
'   39
(   40
)   41
*   42
+   43
,   44
-   45
.   46
/   47
0   48
1   49
2   50
3   51
4   52
5   53
6   54
7   55
8   56
9   57
:   58
;   59
<   60
=   61
>   62
?   63
@   64
A   65
B   66
C   67
D   68
E   69
F   70
G   71
H   72
I   73
J   74
K   75
L   76
M   77
N   78
O   79
P   80
Q   81
R   82
S   83
T   84
U   85
V   86
W   87
X   88
Y   89
Z   90
[   91
\   92
]   93
^   94
_   95
`   96
a   97
b   98
c   99
d   100
e   101
f   102
g   103
h   104
i   105
j   106
k   107
l   108
m   109
n   110
o   111
p   112
q   113
r   114
s   115
t   116
u   117
v   118
w   119
x   120
y   121
z   122
{   123
|   124
}   125
~   126
   129
   143
   157
    160
¡   161
¢   162
£   163
§   167
¨   168
©   169
«   171
¬   172
®   174
°   176
±   177
²   178
³   179
´   180
µ   181
·   183
¸   184
¹   185
º   186
¼   188
½   189
¾   190
×   215
ß   223
à   224
á   225
â   226
ã   227
ä   228
å   229
æ   230
ç   231
è   232
é   233
ì   236
í   237
î   238
ï   239
ð   240
ñ   241
ó   243
ô   244
ö   246
ú   250
û   251
ü   252
š   353
Ž   381
ƒ   402
–   8211
—   8212
‘   8216
’   8217
‚   8218
“   8220
”   8221
„   8222
†   8224
•   8226
…   8230
‹   8249
›   8250
€   8364
™   8482

最佳答案

最好是使用 Python 3。或者,这在很多情况下对我有帮助 string.encode('ascii', errors='ignore') inside read_csv :

read_csv(..., converters={column_x= lambda v: v.encode('ascii',errors='ignore')})

此链接有更多示例:Python: Convert Unicode to ASCII without errors

关于Python Pandas 数据帧 read_csv UnicodeDecodeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31351508/

相关文章:

python - ElasticSearch 在 python 中请求范围时间戳

csv - 在 Flink 中解析 CSV 时,在引用字段内转义引号

javascript - 使用 JavaScript 将大数据转储到 csv 文件

python - Pandas :拆分索引字符串并汇总相等切片的行

python - 将潜在狄利克雷分配与 Gensim 结合使用

python - 在opencv Mac OS中打开摄像头时出错

python - 错误 : suffix or operands invalid for `vbroadcastss'

asp.net - 将即时创建的 CSV 发送回客户端以供下载

python - 按列名称操作 Pandas 数据框值

python - 有没有一种方法可以将函数应用于具有相同外部索引的多索引数据帧切片,而无需迭代每个切片?