Python 2.7 Python以集合集作为输入运行set.intersection

Python 2.7 Python以集合集作为输入运行set.intersection,python-2.7,Python 2.7,我正在研究生物数据集,直接从转录组(RNA)到寻找某些蛋白质序列。我对每个数据集都有一组蛋白质名称,并希望找到所有数据集共有的名称。由于数据的处理方式,我最终得到了一个包含所有子集的变量。 由于set.intersect()命令的工作方式,它至少需要两个集合作为输入: IDs = set.intersection(transc1 & trans2) 但是我只有一个输入,colA,它包含30组80到100个条目。以下是我到目前为止的情况: from glob import glob fo

我正在研究生物数据集,直接从转录组(RNA)到寻找某些蛋白质序列。我对每个数据集都有一组蛋白质名称,并希望找到所有数据集共有的名称。由于数据的处理方式,我最终得到了一个包含所有子集的变量。 由于
set.intersect()
命令的工作方式,它至少需要两个集合作为输入:

IDs = set.intersection(transc1 & trans2)
但是我只有一个输入,
colA
,它包含30组80到100个条目。以下是我到目前为止的情况:

from glob import glob
for file in glob('*_query.tsv'): #input all 30 datasets, first column with protein IDs
  sources = file
  colnames = ['a', 'b', 'c', 'd', 'e', 'f'] 
  df = pandas.read_csv(sources, sep='\t', names=colnames) #colnames headers for df contruction
  colA = df.a.tolist() #turn column a, protein IDs, into list
  IDs = set(colA) #turn lists into sets
如果I
print(colA)
,则输出如下所示,设置了两个未命名的元素:

set(['ID2', 'ID8', 'ID35', 'ID77', 'ID78', 'ID199', 'ID211'])
set(['ID1', 'ID5', 'ID8', 'ID88', 'ID105', 'ID205'])
在这一点上,我被卡住了。我无法获取
set.intersection()
使用
IDs
集合。还尝试了
pandas.merge(*id)
,语法似乎对其有效,但用于比较的条目数超过了最大值(12)

我想使用集合,因为与列表不同,它应该能够快速找到所有数据集之间的公共ID。如果有更好的办法,我完全赞成


非常感谢您的帮助。

transc1&trans2
transc1.crossion(trans2)
相同。从您的代码来看,您的数据看起来不太清楚。这30个输入集是什么样子的(我只看到6列被名称引用)?嗨,dhke,b列到f列在很久以后变得很重要-在这一部分中,只调用a列。每行上的a列都有一个ID。然后该列被转换为一组单独的ID。这是针对每个数据集(转录组)完成的,因此在
colA
中有30组ID,每个ID来自各自的列a。这是同时完成的,因为
glob('*\u query.tsv')
部分同时对所有30个源文件执行此操作。正如这里所写的,您将得到包含30个源文件的列a,作为集合,在变量
colA
下的集合中!请你修一下缩进好吗?for循环很容易被忽略,目前还不清楚它在哪里终止。当然可以。感谢您指出这一点。
set.intersection(*IDs)
,但我不确定您是否对两个不同的对象使用了相同的名称
IDs
。在您的代码中,它是来自一个数据集的一组ID,但您的描述似乎提到它是来自所有数据集的所有ID的列表。