【发布时间】:2018-04-25 11:03:07
【问题描述】:
我正在处理一系列结构有点奇怪的制表符分隔文件。它们是使用 bam-headcount 包创建的,包含序列数据和 DNA 序列短读中每个位置的变体调用。
在某些位置,没有变体调用,在其他位置可能有很多。每行中的选项卡/列数取决于变体调用的数量(每个变体将占据一个新列)。例如:
234 A 3bp_del 4bp_ins
235 G
236 G. 15bp_ins 3bp_del 5bp_del
使用 pandas 解析文件时会出现困难:
import pandas as pd
df = pd.read_csv(FILE, sep='\t')
这会返回一条错误消息:
pandas.errors.ParserError:数据标记错误。 C 错误:预计第 3 行中有 4 个字段,看到 5
发生错误是因为 pandas 使用第一行中的列数来确定它期望看到的列数。我有一个笨拙的解决方法,它在解析之前将带有多列的标题附加到文件中,但它总是会附加相同数量的标题。示例:
Pos Ref Call1 Call2 Call3
234 A 3bp_del 4bp_ins
235 G
236 G. 15bp_ins 3bp_del 5bp_del
我正在寻找一种方法来计算列数最多的行中的选项卡数,以便我可以编写一个脚本,在解析之前将这么多列标题附加到每个 CSV 文件的第一行。
【问题讨论】:
-
Python Pandas Error tokenizing data 的可能重复项 - 请查看那里的任何答案是否可以帮助您。您可以通过将 pandas.errors.ParserError: Error tokenizing data 粘贴到 SO 上的搜索中轻松找到类似的帖子。
标签: python pandas csv tabs bioinformatics