我有一个129 MB的CSV文件,包含849,275行和18列。我正在尝试使用DataFrame
将CSV文件读入pandas read_csv
。
当我使用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 执行此操作?如果它存在,我正在寻找最像熊猫的方式。
不是矫枉过正这个问题,但是这里列出了我确定导致问题的其中一列中的字符类型:
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
答案 0 :(得分:3)
最好是使用Python 3.或者,这有助于我在read_csv中的一些情况下string.encode(' ascii ', errors ='ignore') :
read_csv(..., converters={column_x= lambda v: v.encode('ascii',errors='ignore')})
答案 1 :(得分:1)
如果您完全确定windows-1251
/ cp1251
中的文件,则可以尝试关闭解码错误:
import codecs
codecs.register_error("strict", codecs.ignore_errors)
它帮助我在Windows下构建的Linux下读取csv文件。