我有以下 DataFrame,其中第一列有基因通路 ID,第二列是該通路涉及的基因串列:
| 基因通路ID | 基因ID |
|---|---|
| ID1 | 基因1、基因2、基因3 |
| ID2 | 基因2、基因4、基因6 |
| ID3 | 基因1、基因3、基因6 |
| ... | .... |
為了加快某些程序,我想創建一個字典,其中鍵是基因,值是通路 id 串列:
dict = {gene1:[ID1,ID3], gene2:[ID1,ID2], gene3:[ID1,ID3], ...}
有沒有一種快速的方法來創建這樣的字典?目前我使用的唯一方法太慢了。
uj5u.com熱心網友回復:
我不確定您嘗試了什么解決方案。我可以推薦這個。結果是您要求的字典:
from collections import defaultdict
result = defaultdict(list)
for idx, row in df.iterrows():
genes = row['gene ID'].split(',')
for g in genes:
result[g].append(row['gene pathway ID'])
uj5u.com熱心網友回復:
的情況下
df =
gene pathway ID gene ID
0 ID1 [gene1, gene2, gene3]
1 ID2 [gene2, gene4, gene6]
2 ID3 [gene1, gene3, gene6]
你可以用
from collections import defaultdict
genes_dict = defaultdict(list)
for i, genes in df.itertuples(index=False):
for gene in genes:
genes_dict[gene].append(i)
的情況下
df =
gene pathway ID gene ID
0 ID1 gene1,gene2,gene3
1 ID2 gene2,gene4,gene6
2 ID3 gene1,gene3,gene6
你可以試試
from collections import defaultdict
genes_dict = defaultdict(list)
for i, genes in df.itertuples(index=False):
for gene in genes.split(","):
genes_dict[gene].append(i)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/340529.html
上一篇:迭代和替換資料框列值
