pandas在列中使用额外的逗号读取csv

时间:2015-09-23 15:20:06

标签: python csv pandas

我正在阅读一个基本的csv文件,其中列以逗号分隔,并带有以下列名:

userid, username, body

但是,body列是一个可能包含逗号的字符串。显然这会导致问题,并且大熊猫会抛出错误:

CParserError: Error tokenizing data. C error: Expected 3 fields in line 3, saw 8

有没有办法告诉pandas忽略特定列中的逗号或解决此问题的方法?

3 个答案:

答案 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