Как заметил Антимони, похоже, что в ваших данных есть случайные пропущенные значения, с которыми csv не может легко справиться из коробки. Я бы предложил использовать такую библиотеку, как pandas, которая имеет функцию read_csv
и может обрабатывать отсутствующие значения. Используя эти данные в качестве примера:
gene_id, ENSDARG00000104632, gene_version, 2, gene_name, RERG
gene_id, ENSDARG00000104632, gene_version, 2, transcript_id, ENSDART00000166186
gene_id, ENSDARG00000104632, gene_version, 2, transcript_id, ENSDART00000166186
gene_id, ENSDARG00000104632, gene_version, 2, transcript_id, ENSDART00000166186
gene_id, ENSDARG00000104632, gene_version, 2, transcript_id, ENSDART00000166186
gene_id, ENSDARG00000104632, gene_version, 2, transcript_id, ENSDART00000166186
gene_id, ENSDARG00000104632, gene_version, 2, transcript_id, ENSDART00000166186
gene_id, ENSDARG00000104632, gene_version, 2, transcript_id,
gene_id, ENSDARG00000104632, gene_version, , transcript_id,
gene_id, ENSDARG00000104632, gene_version, 2, transcript_id, ENSDART00000166186
его можно было бы прочитать следующим образом:
import pandas as pd
# Use the 2nd, 5th and 6th columns - i.e.column indices 1, 4 and 5 respectively
# And, we set the 'not available' data - i.e. `na_values` as 'N/A'.
data = pd.read_csv('test.dat', na_values='N/A', header=None, skipinitialspace=True, usecols=[1,4,5])
# now select only the rows without 'gene_version':
d = data.loc[data[4] != 'gene_name']
# and, now we only select columns with index 1 and 5:
selected_data = d[[1, 5]]
Урожайность:
1 5
0 ENSDARG00000104632 RERG
1 ENSDARG00000104632 ENSDART00000166186
2 ENSDARG00000104632 ENSDART00000166186
3 ENSDARG00000104632 ENSDART00000166186
4 ENSDARG00000104632 ENSDART00000166186
5 ENSDARG00000104632 ENSDART00000166186
6 ENSDARG00000104632 ENSDART00000166186
7 ENSDARG00000104632 NaN
8 ENSDARG00000104632 NaN
9 ENSDARG00000104632 ENSDART00000166186
По желанию.
Однако, если данные отсутствуют, как в этом примере, все, что вам нужно сделать, это удалить такие строки, как:
selected_data.dropna()
Что выводит:
1 5
1 ENSDARG00000104632 ENSDART00000166186
2 ENSDARG00000104632 ENSDART00000166186
3 ENSDARG00000104632 ENSDART00000166186
4 ENSDARG00000104632 ENSDART00000166186
5 ENSDARG00000104632 ENSDART00000166186
6 ENSDARG00000104632 ENSDART00000166186
9 ENSDARG00000104632 ENSDART00000166186
(Однако это может быть не то, что вам нужно.)
СПРАВКА
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html
person
jrd1
schedule
21.09.2017
if
, чтобы мы могли видеть строку, которая выдает эту ошибку? - person Antimony   schedule 22.09.2017