如何使用 Pandas 数据框打开 CSV 文件。

3

有一个包含三列数据的CSV格式文件。 第三列是长文本。 当我尝试使用pandas.read_csv打开该文件时,出现了此错误消息。

message : UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 0: invalid start byte.

但是使用以下方法打开文件没有问题:
with open('file.csv', 'r', encoding='utf-8', errors = "ignore") as csvfile:

我不知道如何将这些数据转换为数据帧,也不认为 pandas.read_csv 会正确处理这个错误。

那么,我该怎么打开这个文件并获得数据帧呢?


你使用pandas.read_csv()时是否指定了编码,例如:pandas.read_csv(encoding="utf-8")? - Toby Petty
使用 pandas.read_csv() - PraneetNigam
@woblers 是的,但我收到了相同的消息。 - Antenna_
笔误:read.csv() -> read_csv() - Antenna_
1
请在此处发布您的CSV文件样本-例如前5行。 - rnso
你也可以尝试其他编码方式。我发现有些情况下,“utf-8”适用于大多数库,但是令人费解的是,pandas更喜欢“latin-1”。 - jpp
3个回答

7
尝试这个:
打开cvs文件,用文本编辑器确认以utf-8格式保存。
然后按照通常的方式读取文件:
import pandas
csvfile = pandas.read_csv('file.csv', encoding='utf-8')

0
我会尝试使用内置的CSV读取器,然后将数据放入pandas。
import csv
with open('eggs.csv', newline='') as csvfile:
     spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
     for row in spamreader:
         print(', '.join(row))

如果这个方法不起作用,那么至少您可以确认这是一个 CSV 问题,而不是 Pandas 在编码上出现了问题。
另一个建议是确保您使用的是 Python 3.x,它比 2.7 更好地处理编码问题。
如果您能提供样本,我可以自己测试并相应地更新我的答案。

0

您可以尝试使用“ISO-8859-1”作为另一个编码选项

在您的情况下:

with open('file.csv', 'r', encoding = 'ISO-8859-1', errors = "ignore") as csvfile:

或者尝试这个:

import pandas as pd
data_file = pd.read_csv("file.csv", encoding = "ISO-8859-1")
print(data_file)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接