pandas.errors.ParserError: Error tokenizing data. C error: Expected 10 fields in line 244, saw 11

在用pd.read_csv读取txt文档时出现这个问题,先看下翻译:

这个错误通常在读取CSV文件时出现,它表明在解析CSV文件的某一行时出现问题。具体而言,该错误表示在第244行中,Pandas期望在该行中看到10个字段,但实际上读取的是11个字段,这导致了解析错误。

我打开txt文档看了一下,问题是计数错误,出现错误的那一行多了数据。

解决方法:

1.手动改txt的错误位置(太麻烦pass)

2.在读取CSV文件时使用pd.read_csv()函数的参数error_bad_linesengineerror_bad_lines=False参数将跳过错误行并继续读取剩余部分参数可以控制当遇到数据行字段数量不匹配等异常情况时的处理方式,若是遇到该错误将跳过不合格的行继续读取原始数据,而不是抛出异常并终止程序运行。

我们试一下error_bad_lines=False这个参数:

改之前:

data=pd.read_csv(position, sep='\t', encoding='gb2312',skiprows=[0],header=None)

改之后:

data=pd.read_csv(position, sep='\t', encoding='gb2312',skiprows=[0],header=None,error_bad_lines=False)

结果虽然有警告,但是确实时跳过错误行,读取下一行数据。


更新一下:

新问题:字段报错的问题确实解决,但是用的error_bad_lines=False会导致数据读取不完整,对我后面的工作有影响

解决方法:

1.指定解析器:Pandas的read_csv()函数支持多种解析器,默认使用的是C解析器,但可能不适用于所有情况。可以尝试使用Python解析器或其他可用的解析器。例如:

df = pd.read_csv('filename.csv', engine='python')

 2.指定分隔符和引号:对于字段包含特殊字符的情况,可以尝试指定分隔符和引号。例如:

df = pd.read_csv('filename.csv', delimiter='|', quotechar='"')

 虽然这两个可以尝试,但是最后还是没解决我的问题(暂时)。我打算不用pandas库去读取数据,换别的方法试一下:

1.csv 库。这是 Python 自带的标准库,功能简单但易用。使用该库,你可以直接打开 CSV 文件,并将其转化为可遍历的 CSV 行对象,然后逐行处理数据

import csv

with open(position, 'r', encoding='gb2312') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

2.numpy 库。除了支持数值计算外,numpy 也可以用来读取 CSV 文件。使用该库,你可以直接将 CSV 文件加载到一个 numpy 数组中,方便进行数值计算和数据分析

import numpy as np

data = np.loadtxt(position, delimiter='\t', dtype=str, encoding='gb2312')
print(data)

3.Dask 库。如果你需要读取大型 CSV 文件,则 Dask 库可能更适合你。使用该库,你可以将 CSV 文件读入一个分布式 DataFrame,使用类似 Pandas 的语法进行数据处理

import dask.dataframe as dd

df = dd.read_csv(position, delimiter='\t', dtype=str, encoding='gb2312')
print(df.head())

尝试了2.3方法,本质都是列数不对(理论是10列,实际那一行出现问题出现11列)

大招!!!

使用 usecols 参数选取需要的列

data=pd.read_csv(position, sep='\t', encoding='gb2312',header=0, usecols=range(0, 10))

这样就选取前10列啦,不会报错,错误行也不会跳过导致读取数据不完整。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
pandas.errors.ParserError: Error tokenizing data. C error: Expected 10 fields in line 3, saw 12是pandas库中的一个错误,它表示在解析数据时遇到了问题。这个错误通常是由于数据文件中的某一行的字段数量与预期的字段数量不匹配导致的。具体来说,在第3行中,预期有10个字段,但实际上看到了12个字段。这可能是由于数据文件的格式错误或者字段之间的分隔符不正确引起的。为了解决这个问题,你可以检查数据文件的格式,确保每一行的字段数量与预期的一致,并且字段之间使用正确的分隔符。如果数据文件中存在异常字符或者缺失值,你也可以考虑在读取数据时使用相应的参数进行处理,例如使用`error_bad_lines=False`来跳过错误行或者使用`na_values`参数来指定缺失值的表示方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python报错:pandas.errors.ParserError: Error tokenizing data. C error: Expected 3……](https://blog.csdn.net/shuiyixin/article/details/88930359)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [pandas.errors.ParserError: Error tokenizing data. C error: 的解决【实测成功】](https://blog.csdn.net/weixin_41529093/article/details/122390452)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值