Python使用特定的行终止符读取CSV文件
我试图从下面给出的示例csv创建一个数据帧,但我得到了错误的标记化数据。C错误:从第0行开始的字符串内的EOF。我没有太多的练习来处理糟糕的线条,但我真的很想学习处理这种事情的最佳方法。我尝试了许多不同的读取csv选项,如error\u bad\u line=False,但也没有成功Python使用特定的行终止符读取CSV文件,python,pandas,Python,Pandas,我试图从下面给出的示例csv创建一个数据帧,但我得到了错误的标记化数据。C错误:从第0行开始的字符串内的EOF。我没有太多的练习来处理糟糕的线条,但我真的很想学习处理这种事情的最佳方法。我尝试了许多不同的读取csv选项,如error\u bad\u line=False,但也没有成功 CParserError: Error tokenizing data. C error: EOF inside string starting at line 0 我猜是“的行终止符引起了这个问题,我猜最好的方
CParserError: Error tokenizing data. C error: EOF inside string starting at line 0
我猜是“的行终止符引起了这个问题,我猜最好的方法是循环通过每一行和进程,所以我在另一个不同的人的帮助下想出了下面的生成器,希望我能接近。我真的很想学习如何使用生成器并为此做出让步
样本数据:
"USNC3255","27","US","NC","LANDS END","72305006","KNJM","KNCA","KNKT","T72305006","","","NCC031","NCZ095","","545","28594","America/New_York","34.65266","-77.07661","7","RDU","893727","
"USNC3256","27","US","NC","LANDSDOWN","72314058","KEHO","KAKH","KIPJ","T72314058","","","NCC045","NCZ068","sc007","517","28150","America/New_York","35.29374","-81.46537","797","CLT","317845","
我制作了以下代码,删除了最后两个字符,但不确定能否从行中生成数据帧:
def big_table_generator(filename):
with open(filename, 'rt') as f:
for line in f:
yield line[:-3]
gen = big_table_generator('../data/test_sun_file.csv')
pd.DataFrame(gen)
这是我提出的解决方案,但我真的想避免使用list和append,而是利用生成器,但使用生成器还不够舒适
def parse_file(filename):
newline = []
with open(filename, 'rb') as f:
reader = csv.reader(f, quoting=csv.QUOTE_NONE)
for row in reader:
newline.append([s.strip('"') for s in row[:-1]])
df = pd.DataFrame(newline)
df = df.applymap(lambda x: nan if len(x) == 0 else x).astype(object)
return df
df = parse_file(filename)
这是我提出的解决方案,但我真的想避免使用list和append,而是利用生成器,但使用生成器还不够舒适
def parse_file(filename):
newline = []
with open(filename, 'rb') as f:
reader = csv.reader(f, quoting=csv.QUOTE_NONE)
for row in reader:
newline.append([s.strip('"') for s in row[:-1]])
df = pd.DataFrame(newline)
df = df.applymap(lambda x: nan if len(x) == 0 else x).astype(object)
return df
df = parse_file(filename)
我有一个类似的错误。通过使用选项quoting=csv.QUOTE\u NONE in read\u csv修复了它 例如:
df = pd.read_csv(csvfile, header = None, delimiter="\t", quoting=csv.QUOTE_NONE, encoding='utf-8')
关于第二条评论中的原因的一些信息:我有一个类似的错误。通过在read\u csv中使用quoting=csv.QUOTE\u NONE选项修复了它 例如:
df = pd.read_csv(csvfile, header = None, delimiter="\t", quoting=csv.QUOTE_NONE, encoding='utf-8')
关于为什么在这里的第二条注释中出现的一些信息:您能解释一下示例数据中的数据点是如何格式化的,以及您希望数据帧是什么样子吗?我不确定您所说的数据点是如何格式化的。这些行只是文件中带有逗号分隔值和引号字符的行。尝试只使用p生成一个数据框,其中的列由类似于任何读取csv过程的值填充。您能否解释示例数据中的数据点是如何格式化的,以及您希望数据框是什么样子的?我不确定数据点是如何格式化的。这些行只是文件中带有逗号分隔值和q的行uote字符。尝试生成一个数据框,其中的列由类似于任何读取csv过程的值填充。