0

次の形式のcsvテーブルが2つ(かなり大きく、〜15k行)あります。

Disease/Trait                Mapped_gene    p-Value 
Wegener's granulomatosis    HLA-DPB1        2.00E-50    
Wegener's granulomatosis    TENM3 - DCTD    2.00E-06    
Brugada syndrome            SCN5A           1.00E-14    
Brugada syndrome            SCN10A          1.00E-68    
Brugada syndrome            HEY2 - NCOA7    5.00E-17    
Major depressive disorder   IRF8 - FENDRR   3.00E-07    


Identifier  Homologues  Symbol
CG11621     5286    HEY2
CG11621     5287    IRF8
CG11621     5287    PIK3C2B
CG11621     5288    PIK3C2G
CG11621     5288    PIK3C2G
CG11949     2035    DCTD
CG11949     2035    EPB41
CG11949     2036    EPB41L1
CG11949     2037    EPB41L2

Python を使用してテーブルを比較し、テーブル 2 の「シンボル」列のいずれかがテーブル 1 の「Mapped_gene」と一致する場合、各テーブルの一致する行をマージして出力ファイルに入れることができるようにしたいと思います。

Pandas プラグインを使用してみましたが、機能しませんでした。誰かがより良いアイデアを持っていますか?

ありがとう。

4

1 に答える 1

0

これはあなたが望むように動作するはずです:

import csv

diseases = {}

# Load the disease file in memory
with csv.reader(open('table1.csv', 'rb')) as dfile:
    # Skip the header
    dfile.next()
    for disease, gene, pvalue in dfile:
        diseases[gene] = (disease, pvalue)

with csv.reader(open('table2.csv', 'rb')) as idfile, csv.writer(open('output.csv', 'wb')) as output:
    # Skip the header
    idfile.next()
    for ident, homologue, symbol in idfile:
        if symbol in diseases:
            output.writerow((ident, homologue, symbol) + diseases[symbol])

ただし、その下のすべての遺伝子名Mapped_geneは一意であると想定しています。それ以外の場合は、重複に対処するために簡単に拡張できます。

于 2014-02-11T13:09:55.577 に答える