pd.read_csv 报错 UnicodeDecodeError: 'utf-8' codec can't decode byte 0x84 in position 6074: invalid start byte
时间: 2024-08-16 16:04:37 浏览: 138
遇到 `UnicodeDecodeError: 'utf-8' codec can't decode byte 0x84 in position 6074: invalid start byte` 这样的错误通常是因为读取的CSV文件的内容编码与你指定的 `pd.read_csv` 函数使用的默认编码(如UTF-8)不匹配。CSV文件可能使用的是其他编码,比如GBK、ISO-8859-1等。
解决这个问题的方法有几种:
1. **确认文件编码**:
使用文本编辑器查看文件的开头部分,看是否有明确的字符集声明。例如,如果文件以 `` 开头,那可能是UTF-16LE。找到正确的编码,将其传递给 `read_csv` 函数。
```python
df = pd.read_csv('file.csv', encoding='your_encoding_here')
```
2. **尝试识别编码**:
如果不确定原始编码,可以使用Python内置的 `chardet` 库来检测文件的自动编码。
```python
import chardet
with open('file.csv', 'rb') as f:
result = chardet.detect(f.read())
detected_encoding = result['encoding']
df = pd.read_csv('file.csv', encoding=detected_encoding)
```
3. **手动转换**:
可以先将文件内容转换到正确的编码再读取,比如从二进制流转换到UTF-8。
```python
with open('file.csv', 'rb') as binary_file:
content = binary_file.read().decode('binary_codec_name').encode('utf-8')
df = pd.read_csv(StringIO(content), encoding='utf-8')
```
其中 `'binary_codec_name'` 需要替换为实际的二进制编码,比如 `'gbk'` 或 `'iso-8859-1'`。
阅读全文