Ошибка при извлечении значения столбца из файла CSV на основе совпадения строки из другого столбца того же файла - PullRequest
0 голосов
/ 07 января 2020

У меня есть несколько файлов (сотни) со следующей структурой таблицы f1, f2, f3, f4, f5, f6, путь f7, 00010, kegg n / a naive 1 minpath, 1, 56, 12, путь гликолиза / глюконеогенеза, 00020, кегг н / д наивный 1 минпут, 1, 50, 12, путь цитратного цикла (цикл TCA), 00030, кегг н / д наивный 1 минпуть, 1, 42, 9, путь пентозофосфатного пути, 00031, кегг н / наивный 1 minpath, 0, 12, 2, метаболизм инозита

Я хочу получить следующие данные из всех файлов Гликолиз / глюконеогенез, цитратный цикл (цикл ТСА), пентозофосфатный путь, метаболизм инозитола, имя файла1, 12,12, 9,2 filename2, 23,10,4,6

Поэтому я попытался запустить следующий код, используя python pandas dataframe, но он выдает ошибку Traceback (последний вызов был последним): File "searchwrite .py ", строка 16, in lap = df.loc [df ['f2'] == base.loc [x, 'ID']," f6 "]. iloc [1] Файл" / usr / local / lib /python3.6/dist-packages/pandas/core/indexing.py ", строка 1424, в getitem вернуть файл self._getitem_axis (Maybe_callable, axis = axis)" / usr / local /lib/python3.6/dist-packages/pandas/core/indexing.py ", строка 2157, в файле _getitem_axis self._validate_integer (key, axis)" /usr/local/lib/python3.6/ dist-packages / pandas / core / indexing.py ", строка 2088, в _validate_integer Повышение IndexError (« один позиционный индексатор выходит за пределы ») IndexError: один позиционный индексатор выходит за пределы

code:

import pandas as pd
bases = pd.read_csv('matcher.csv')
resut = pd.read_csv('result.tsv',sep='\t',index_col=0)
df = []
t = 1
y = 1
for f in glob.glob('*.csv'):
    df = pd.read_csv(f)
    resut.at[y,0] = f
    lap = 0
    z = 0
    for x in range(len(bases)):
        lap = df.loc[df['f2'] == bases.loc[x,'role'],"f6"].iloc[0]
        z = x + 1
        resut.at[t,z] = lap
        resut.at[0,z]= bases.loc[x,'role']
    t = t + 1
    y = y + 1
resut.to_csv('result.tsv',sep='\t')

Файл соответствия содержит список строк с заголовком в виде «role», аналогичным f7, для поиска в каждом файле.

...