【发布时间】:2023-01-05 20:57:07
【问题描述】:
我是 python 的初学者并且遇到了以下问题:我有一个很长的字符串列表(我现在以 3 个为例):
ENSEMBL_IDs = ['ENSG00000040608',
'ENSG00000070371',
'ENSG00000070413']
哪个是部分的与我的 DataFrame genes_df 的第 0 列中的数据匹配(显示前 3 个条目):
genes_list = (['ENSG00000040608.28', 'RTN4R'],
['ENSG00000070371.91', 'CLTCL1'],
['ENSG00000070413.17', 'DGCR2'])
genes_df = pd.DataFrame(genes_list)
我想要执行的任务在概念上并不那么困难:我想比较 ENSEMBL_IDs 和 genes_df.iloc[:,0] 的每个元素(这是部分匹配:ENSEMBL_IDs 的每个元素都包含在 genes_df 的第 0 列中,如概述多于)。如果 EMSEMBL_IDs 的元素与 genes_df.iloc[:,0] 中的元素匹配(它确实如此,除了句点 ".XX" 之后的额外数字),我想返回存储在第一列中的“相应”值genes_df Dataframe:实际基因名称,以'RTN4R'为例。
我想将这些存储在列表中。所以,最后,我会得到如下列表:
`genenames = ['RTN4R', 'CLTCL1', 'DGCR2']`
一些可能有用的信息:ENSEMBL_IDs 中的所有条目都是唯一的,并且它们肯定都包含在 genes_df 的第 0 列中。
我想我正在寻找以下方面的东西:
`genenames = []
for i in ENSEMBL_IDs:
if i in genes_df.iloc[:,0]:
genenames.append(# corresponding value in genes_df.iloc[:,1])`
如果之前有人问过这个问题,我很抱歉;我一直在寻找,但无法找到适用于我的问题的解决方案。
谢谢您的帮助!
也感谢编辑,英语不是我的第一语言,所以改进很有见地。
【问题讨论】:
标签: python-3.x pandas list dataframe