我有一个 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 Pandas 数据帧 read_csv UnicodeDecodeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31351508/