Я новичок в регулярных выражениях, поэтому этот вопрос может показаться глупым. У меня есть следующая таблица для анализа в панде данных. Первые 18 столбцов разделены пробелами (я не уверен, какой пробел здесь используется, но я пробовал и уверен, что это не табуляция), а 19-й столбец следует проанализировать целиком. На следующем рисунке таблица выглядит в Unix с командой less
Мой текущий код выглядит следующим образом:
import pandas as pd
import numpy as np
import argparse
parser = argparse.ArgumentParser(
description='Path to the output from hmmscan formatted as parsable table')
parser.add_argument('-f', action="store", dest="f", type=str, required=True)
args = parser.parse_args()
df = pd.read_csv(args.f, header=None, comment='#', sep='\s{18}')
df.columns = ['targetName','targetAccession','queryName','queryAccession',
'E-value1','score1','bias1','E-value2', 'score2', 'bias2',
'exp','reg','clu','ov','env','dom','rep','inc','targetDescription']
Однако этот код анализирует только данныетаблица в два столбца, приводящая к следующей ошибке:
[4721 rows x 2 columns]
Traceback (most recent call last):
File "countTF.py", line 15, in <module>
'exp','reg','clu','ov','env','dom','rep','inc','targetDescription']
File "/home/yh362/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py", line 5080, in
__setattr__
return object.__setattr__(self, name, value)
File "pandas/_libs/properties.pyx", line 69, in pandas._libs.properties.AxisProperty.__set__
File "/home/yh362/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py", line 638, in _set_axis
self._data.set_axis(axis, labels)
File "/home/yh362/anaconda3/lib/python3.7/site-packages/pandas/core/internals/managers.py", line 155, in set_axis
'values have {new} elements'.format(old=old_len, new=new_len))
ValueError: Length mismatch: Expected axis has 2 elements, new values have 19 elements
Я думаю, что мое выражение reg неверно, но не уверен, как написать правильное выражение, так как я совсем не знаком с выражением reg. Надеюсь, кто-нибудь может мне помочь с этим. Спасибо!