我有一个小问题,我希望你能帮助我:)我试图提供简化的例子来帮助你明白我的意思。我正在使用Python 2.6。替换两个csv文件的值
所以,我目前正试图重新分配表示两个对象之间交互的文件中的一些值。交互文件(文件1)看起来是这样的:
Thing1 Thing2 0.625
Thing2 Thing3 0.191
Thing1 Thing3 0.173
虽然我的其他文件(文件2),也tsv
,看起来像:
DiffName1 Thing1 ...
DiffName2 Thing2 ...
DiffName3 Thing3 ...
从本质上讲,我想借此file1
,在file2中找到对应的值,并创建一个与file1具有相同布局的新文件,但将'Thing1'替换为'DiffName1'等等,同时保持file1
的结构。即具有相应交互值的两列。
到目前为止,从提出问题和阅读的答案在这里,我已经取得了类似的结果与此脚本:(我检查了,但有可能在这里的一些冗余/错误的事情)
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]])
是谁能给我一些建议吗?
干杯,
马修
你有使用熊猫的自由吗?如果是这样,请尝试使用熊猫加入或str.replace功能, – pmaniyan
它究竟如何不适合你? –
我只是在问,如果你有使用熊猫的自由。 – pmaniyan