【发布时间】:2021-12-08 20:56:13
【问题描述】:
我在 Python 中有以下数据:
list1=[[ENS_ID1,ENS_ID2,ENS_ID3], [ENS_ID10,ENS_ID24,ENS_ID30] , ....]
映射(一个数据框,在第一列中我有一个 Ensemble 基因 ID,在第二列中是相应的 MGI 基因 ID)
| ENS_ID | MGI_ID |
|---|---|
| ENS_ID1 | MGI_ID1 |
| ENS_ID2 | MGI_ID2 |
我正在尝试获取另一个列表列表,而不是 ENS_ID 我有 MGI_ID。 为了映射 ID,我使用了一个嵌套在另一个循环中的 for 循环,但显然,作为一种方法,它确实很慢。 我怎样才能加快速度? 代码如下:
for l in ens_lists:
mgi = []
for i in l:
mgi.append(mapping['MGI_ID'][mapping[mapping['ENSEMBL_ID']==i].index].values[0])
mgi_lists.append(mgi)
【问题讨论】:
-
不知道它是否更快,但你能对它们进行排序和压缩吗?
-
python 中的循环非常慢。您可以查看
multithreading以提高性能。 -
我在想是否有不带循环的不同方法
-
您能否详细说明
mapping的结构?我虽然ENS_ID和MGI_ID是简单的常量,但mapping['MGI_ID'][mapping[mapping['ENSEMBL_ID']==i].index].values[0]行让我觉得结构比简单的字典更复杂... -
@surftijmen 由于 GIL,多线程对纯 Python 代码没有帮助。
标签: python pandas performance for-loop