python - 如何加速这个 Pandas for 循环
问题描述
我在 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)
解决方案
作为一种快速解决方案,您可以尝试使用 listcomp 而不是 append,这应该会更快:
mgi_lists = [[mapping['MGI_ID'][mapping[mapping['ENSEMBL_ID']==i].index].values[0] for i in l] for l in ens_lists]
关于为什么 listcomp 更快的一些解释在这里
推荐阅读
- excel - 如何使图形根据值更改颜色
- xml - 从 xpath 检索值和属性名称
- javascript - 如何从输入文本中获取剑道窗口内容
- apache-spark - 'winutils' 如何像 hadoop 一样工作?它的作用是什么?
- json - 将数据从云存储导入 BigQuery 时为非记录字段错误指定的 JSON 对象
- clang - 如何在 Cling 中使用 LLVM IR(或其他类似 REPL 的交互方式)?
- scala - 如何使用 Spark/Scala 中另一列的分隔符拆分列
- reactjs - 自定义按钮箭头轮播 Antd
- css - 如何在现有的 React 站点上实现主题切换器
- python - 这个 python 枚举脚本是如何工作的,是什么让它这么快?