【问题标题】:Ignore delimiters at end of row in Pandas read csv忽略 Pandas 中行尾的分隔符读取 csv
【发布时间】:2021-12-08 12:07:40
【问题描述】:

我有 CSV 文件中的数据。我使用单个制表符将数据分成列。大多数行只包含一个制表符,如下所示:

A\tB

某些行在行尾包含额外的选项卡,如下所示:

A\tB\t\t

因此,如果我执行pd.read_csv(filePath, sep='\t'),则会收到错误消息:ParserError: Error tokenizing data. c error: Expected 2 fields in line XXX, saw 4。这是因为有些行包含 4 个选项卡。

如果一行末尾包含额外的标签,我该如何忽略它?

【问题讨论】:

  • 除了分隔符之外,大部分是 python - Pandas, read CSV ignoring extra commas - Stack Overflow 的重复项。
  • 在读取数据时(使用names 参数)指定额外的两列(或全部四列),然后在读取数据帧后删除最后两列。我认为(不确定)只有 2 列的行将用 NaN/Nones 填充剩余的列。
  • 这能回答你的问题吗? Pandas, read CSV ignoring extra commas
  • @user202729 谢谢,这似乎是一个很好的副本。 usecols 一直没有引起我的注意,直到现在。

标签: python pandas csv


【解决方案1】:

之前使用io.StringIO清理文件:

import pandas as pd
import io

with open('data.txt') as table:
    buffer = io.StringIO('\n'.join(line.strip() for line in table))
    df = pd.read_table(buffer, header=None)

输出:

>>> df
   0  1
0  A  B
1  A  B

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-07
    • 2020-01-25
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 2020-08-05
    • 2018-03-25
    • 2015-07-20
    相关资源
    最近更新 更多