gpt4 book ai didi

python - 如何比较 python 中两个 CSV 的列?

转载 作者:太空宇宙 更新时间:2023-11-04 11:00:29 28 4
gpt4 key购买 nike

嗨我有两个 CSV 文件作为输入,例如:

文件1:

AK163828 chr5 s1 + e1 cttt 4
AK163828 chr5 s2 + e2 gtca 4
AK168688 chr6 s3 + e3 ggcg 4
AK168688 chr6 s4 + e4 tctg 4

文件2:

chr6s3+e3 ggcg
chr5s1+e1 cttt
chr6s4+e4 tata
chr5s2+e2 ggcg

#as you can see the file2 is randomly sorted

我想比较 file2 的第 1 列与 file1 的第 2、3、4、5 列合并,同时比较 file2 的第 2 列与文件 1 的第 6 列,并仅选择匹配的行。

期望的输出是

chr6s3+e3 ggcg
chr5s1+e1 cttt

我尝试使用这段代码:

import csv

reader1 = csv.reader(open(file1), dialect='excel-tab' )
reader2 = csv.reader(open(file2), dialect='excel-tab' )

for row1, row2 in zip(reader1,reader2):
F1 = row1[1] + row1[2] + row1[3] + row1[4] + '\t' row1[5]
F2 = row2[0] + '\t' + row2[1]
print set(F1) & set(F2)

但它不起作用。你能帮我修复我的代码或给我其他方法吗?感谢您的帮助!

最佳答案

快速而肮脏:

import csv

file1 = 'C:/Users/Me/Desktop/file1'
file2 = 'C:/Users/Me/Desktop/file2'

reader1 = csv.reader(open(file1))
reader2 = csv.reader(open(file2))

F1 = set(''.join(row1[0].strip().split()[1:6]) for row1 in reader1)
F2 = set(''.join(row2[0].strip().split()) for row2 in reader2)

for sequence in F1.intersection(F2):
print(sequence[:-4]),
print('\t'),
print(sequence[-4:])

输出:

chr6s3+e3   ggcg
chr5s1+e1 cttt

关于python - 如何比较 python 中两个 CSV 的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6004242/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com