私はあなたが私を助けてくれることを願っている小さな問題を抱えています。私はPython 2.6を使用しています。2つのcsvファイルの値を置き換えます
私は現在、2つのオブジェクト間のやりとりを表すファイルにいくつかの値を再割り当てしようとしています。また、tsv
私の他のファイル(FILE2)、一方で
Thing1 Thing2 0.625
Thing2 Thing3 0.191
Thing1 Thing3 0.173
のようなものになります:対話ファイル(file1が)次のようになります基本的に
DiffName1 Thing1 ...
DiffName2 Thing2 ...
DiffName3 Thing3 ...
を、私はfile1
を取るしたいと思いますファイル2の対応するの値を見つけて、ファイル1と同じレイアウトで新しいファイルを作成しますが、 'Thing1'は 'DiffName1'に置き換えられ、同様に構造はfile1
に維持されます。対応する相互作用値を有する2つの列である。
これまでのところ、質問をして、ここで答えを読んでから、私はこのスクリプトと同様の結果を達成した:(私がチェックしましたが、ここにいくつかの冗長/間違ったことがあるかもしれません)
import csv
import sys
interaction_file = sys.argv[1]
Out_file = sys.argv[2]
f_output = open(Out_file, 'wb')
ids = {}
with open('file2') as f_file2:
csv_file2 = csv.reader(f_file2, skipinitialspace=True)
header = next(csv_file2)
for cols in csv_file2:
ids[cols[7]] = cols[0]
with open(interaction_file, 'rb') as f_file1:
csv_file1 = csv.reader(f_file1, delimiter='\t')
csv_output = csv.writer(f_output, delimiter='\t')
for cols in csv_file1:
csv_output.writerow([ids.get(cols[0], cols[0]), ids.get(cols[1], cols[1]), cols[2]])
しかし何らかの理由で、私はfile2
のレイアウトがこのスクリプトが元々書かれていたファイルと少し違っていると思うので、私はこの仕事をすることができませんでした。私は、このファイルの各行を理解しようとかなりの時間を費やしてきたが、私はかなり完全に最終ラインを理解していないので、私はまだかなりそれはおそらく、ランニングを取得することはできません。
csv_output.writerow([ids.get(cols[0], cols[0]), ids.get(cols[1], cols[1]), cols[2]])
は誰です私に助言をくれますか?
乾杯、
マシュー
パンダを自由に使用できますか?もしそうなら、pandas joinまたはstr.replace関数を使って試してみてください。 – pmaniyan
それはあなたのためにどのように機能しませんか? –
パンダを自由に使うことができたら、私はちょうどお尋ねしました。 – pmaniyan