熊猫在列中使用额外的逗号读取 csv
Posted
技术标签:
【中文标题】熊猫在列中使用额外的逗号读取 csv【英文标题】:pandas read csv with extra commas in column 【发布时间】:2015-12-21 00:02:31 【问题描述】:我正在读取一个基本的 csv 文件,其中的列用逗号分隔,这些列名:
userid, username, body
但是,body 列是一个可能包含逗号的字符串。显然这会导致问题,pandas 会抛出错误:
CParserError: Error tokenizing data. C error: Expected 3 fields in line 3, saw 8
有没有办法告诉 pandas 忽略特定列中的逗号或解决这个问题的方法?
【问题讨论】:
【参考方案1】:假设我们正在读取您的名为 comma.csv
的数据框:
userid, username, body
01, n1, 'string1, string2'
您可以做的一件事是在列中指定字符串的分隔符:
df = pd.read_csv('comma.csv', quotechar="'")
在这种情况下,由'
分隔的字符串被视为全部字符串,无论它们中的逗号如何。
【讨论】:
我不认为他的字符串有引号,因为如果有的话,那么熊猫会在没有quotechar
的情况下识别它
@David Ok 明白了。您的数据框已按“原样”提供,或者您可以对其进行一些预处理?
@David 看看this的问题,希望对你有帮助。
@David 为什么不直接从 SQL 导入,可能是这样的***.com/questions/12047193/…
我试过这个例子,但对我不起作用。 Python 3,pandas 0.18.0 读取 comma.csv
但 01
成为索引 1
,而 username
仅成为 'string1
:(【参考方案2】:
将 usecols 和 lineterminator 添加到您的 read_csv() 函数中,其中 n 是列的长度。
就我而言:
n = 5 #define yours
df = pd.read_csv(file,
usecols=range(n),
lineterminator='\n',
header=None)
【讨论】:
帮助解决了我的问题。谢谢!【参考方案3】:这有帮助吗?
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://***.com/a/40477760/6907424
[2] 解决“UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 157: character maps to undefined”:https://***.com/a/9233174/6907424
【讨论】:
以上是关于熊猫在列中使用额外的逗号读取 csv的主要内容,如果未能解决你的问题,请参考以下文章