You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何快速将基因通路DataFrame转换为指定结构的字典?

快速生成目标字典的两种高性能方案

方案1:pandas向量化实现(适合千万级以内数据集,代码最简洁)

利用pandas内置的字符串拆分、行爆炸、分组聚合能力,所有计算底层走C实现,远快于Python层面的手动循环:

import pandas as pd

# 假设你的原始DataFrame变量名为df
# 第一步:将逗号分隔的基因ID拆分为列表,再爆炸为单个基因占一行的结构
df_exploded = df.assign(gene=df['gene ID'].str.split(',')).explode('gene')
# 第二步:按基因分组,收集所有所属通路ID,直接转为字典
gene_pathway_dict = df_exploded.groupby('gene')['gene pathway ID'].apply(list).to_dict()

方案2:defaultdict + itertuples实现(适合超大规模数据集,内存占用更低)

如果你的数据集行数超过百万,不想产生爆炸后的中间DataFrame占用额外内存,可以用这个方案,itertuples是pandas遍历行的最快接口,比iterrows性能高10~100倍:

from collections import defaultdict

gene_pathway_dict = defaultdict(list)
# 仅遍历需要的两列,减少不必要的开销
for pathway_id, gene_str in df[['gene pathway ID', 'gene ID']].itertuples(index=False):
    for gene in gene_str.split(','):
        gene_pathway_dict[gene].append(pathway_id)

# 若不需要defaultdict的特性,可转为普通dict
# gene_pathway_dict = dict(gene_pathway_dict)

两种方案都比常规的嵌套iterrows循环性能高至少一个数量级,数据量越大优势越明显。

内容的提问来源于stack exchange,提问作者Andrea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:36:07