0

2 つの CSV ファイルがあります。

まず、1列を取得してリストを作成します。

次に、別の CSV から辞書を作成したいと思いますが、1 つの列の値が以前に作成したリストにある値と一致する行のみを使用します。

これまでのコードは次のとおりです。

#modified from: http://bit.ly/1iOS7Gu
import pandas
colnames = ['Gene > DB identifier', 'Gene_Symbol',  'Gene > Organism > Name', 'Gene > Homologues > Homologue > DB identifier',  'Homo_Symbol',  'Gene > Homologues > Homologue > Organism > Name',  'Gene > Homologues > Data', 'Sets > Name']
data = pandas.read_csv(raw_input("Enter csv file (including path)"), names=colnames)

filter = set(data.Homo_Symbol.values)

print set(data.Homo_Symbol.values)

#new_dict = raw_input("Enter Dictionary Name")
#source: http://bit.ly/1iOS0e3
import csv
new_dict = {}
with open('C:\Users\Chris\Desktop\gwascatalog.csv', 'rb') as f:
  reader = csv.reader(f)
  for row in reader:
      if row[0] in filter:
        if row[0] in new_dict:
            new_dict[row[0]].append(row[1:])
        else:
            new_dict[row[0]] = [row[1:]]
print new_dict

2 つのサンプル データ ファイルは次のとおりです: http://bit.ly/1hlpyTH

何か案は?前もって感謝します。

4

1 に答える 1

1

collections.defaultdictを使用して、dict のリストのチェックを取り除くことができます。

from collections import defaultdict

new_dict = defaultdict(list)
#...
   for row in reader:
      if row[0] in filter:
         new_dict[row[0]].append(row[1:])
于 2014-02-15T18:01:23.257 に答える