我正在阅读一个基本的csv文件,其中列以逗号分隔,并带有以下列名:
userid, username, body
但是,body列是一个可能包含逗号的字符串。显然这会导致问题,并且大熊猫会抛出错误:
CParserError: Error tokenizing data. C error: Expected 3 fields in line 3, saw 8
有没有办法告诉pandas忽略特定列中的逗号或解决此问题的方法?
答案 0 :(得分:15)
想象一下,我们正在阅读名为comma.csv
的数据框:
userid, username, body
01, n1, 'string1, string2'
您可以做的一件事是在列中指定字符串的分隔符:
df = pd.read_csv('comma.csv', quotechar="'")
在这种情况下,由'
分隔的字符串被视为总计,无论其中是否有逗号。
答案 1 :(得分:1)
在您的read_csv()函数中添加usecols和lineterminator,n是列的长度。
就我而言:
n = 5 #define yours
df = pd.read_csv(file,
usecols=range(n),
lineterminator='\n',
header=None)
答案 2 :(得分:0)
这有帮助吗?
import csv
with open("csv_with_commas.csv", newline='', encoding = 'utf8') as f:
csvread = csv.reader(f)
batch_data = list(csvread)
print(batch_data)
参考:
[1] https://stackoverflow.com/a/40477760/6907424
[2] 解决“UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 157: character maps to undefined”:https://stackoverflow.com/a/9233174/6907424