我想检索mrna_kirp
的行,其中mrna_kirp
的索引与gmt_c4
Dataframe 中任何位置的值匹配。
mrna_subset = mrna_kirp.loc[mrna_kirp.index.isin(gmt_c4)]
根据API,我的代码只返回索引和列标签都匹配的匹配项。但我想检索所有可能的匹配。
输入:gmt_c4.iloc[0:5,0:5]
pd.DataFrame({'MORF_ATRX': {('MORF_BCL2',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_BCL2',
'ADCY3',
'SYT5',
'LTBP4',
'A1BG',
'AQP5',
'AQP7'): 'TMEM11',
('MORF_BNIP1',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_BNIP1',
'PVR',
'ADCY3',
'BMP10',
'NRTN',
'S100A5',
'IL16'): 'SYT5',
('MORF_BCL2L11',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_BCL2L11',
'LORICRIN',
'PVR',
'A2BP1',
'FGF18',
'BMP10',
'F2RL3'): 'NRTN',
('MORF_CCNF',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_CCNF',
'A1CF',
'EIF5B',
'TMEM11',
'EEF1AKMT3',
'PEX3',
'HMGN4'): 'GTSE1',
('MORF_ERCC2',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_ERCC2',
'SEC31A',
'BTD',
'GRIK5',
'EIF5B',
'TMEM11',
'BPHL'): 'HNRNPL'},
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_ATRX': {('MORF_BCL2',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_BCL2',
'ADCY3',
'SYT5',
'LTBP4',
'UTRN',
'AQP5',
'AQP7'): 'KIFC3',
('MORF_BNIP1',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_BNIP1',
'PVR',
'ADCY3',
'BMP10',
'NRTN',
'S100A5',
'IL16'): 'LTBP4',
('MORF_BCL2L11',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_BCL2L11',
'LORICRIN',
'PVR',
'KLRC4',
'FGF18',
'BMP10',
'F2RL3'): 'S100A5',
('MORF_CCNF',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_CCNF',
'BMS1',
'EIF5B',
'TMEM11',
'EEF1AKMT3',
'PEX3',
'HMGN4'): 'HNRNPL',
('MORF_ERCC2',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_ERCC2',
'SEC31A',
'BTD',
'GRIK5',
'EIF5B',
'TMEM11',
'BPHL'): 'MUTYH'},
'ADCY3': {('MORF_BCL2',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_BCL2',
'ADCY3',
'SYT5',
'LTBP4',
'UTRN',
'AQP5',
'AQP7'): 'HTR1B',
('MORF_BNIP1',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_BNIP1',
'PVR',
'ADCY3',
'BMP10',
'NRTN',
'S100A5',
'IL16'): 'FIG4',
('MORF_BCL2L11',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_BCL2L11',
'LORICRIN',
'PVR',
'KLRC4',
'FGF18',
'BMP10',
'F2RL3'): 'IL16',
('MORF_CCNF',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_CCNF',
'BMS1',
'EIF5B',
'TMEM11',
'EEF1AKMT3',
'PEX3',
'HMGN4'): 'PLEKHB1',
('MORF_ERCC2',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_ERCC2',
'SEC31A',
'BTD',
'GRIK5',
'EIF5B',
'TMEM11',
'BPHL'): 'TAF5L'},
'SEC31A': {('MORF_BCL2',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_BCL2',
'ADCY3',
'SYT5',
'LTBP4',
'UTRN',
'AQP5',
'AQP7'): 'DDX11',
('MORF_BNIP1',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_BNIP1',
'PVR',
'ADCY3',
'BMP10',
'NRTN',
'S100A5',
'IL16'): 'CYP2D6',
('MORF_BCL2L11',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_BCL2L11',
'LORICRIN',
'PVR',
'KLRC4',
'FGF18',
'BMP10',
'F2RL3'): 'SLC6A2',
('MORF_CCNF',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_CCNF',
'BMS1',
'EIF5B',
'TMEM11',
'EEF1AKMT3',
'PEX3',
'HMGN4'): 'PIGF',
('MORF_ERCC2',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_ERCC2',
'SEC31A',
'BTD',
'GRIK5',
'EIF5B',
'TMEM11',
'BPHL'): 'AGPS'},
'BTD': {('MORF_BCL2',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_BCL2',
'ADCY3',
'SYT5',
'LTBP4',
'UTRN',
'AQP5',
'AQP7'): 'AGPS',
('MORF_BNIP1',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_BNIP1',
'PVR',
'ADCY3',
'BMP10',
'NRTN',
'S100A5',
'IL16'): 'GRIK5',
('MORF_BCL2L11',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_BCL2L11',
'LORICRIN',
'PVR',
'KLRC4',
'FGF18',
'BMP10',
'F2RL3'): 'MASP2',
('MORF_CCNF',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_CCNF',
'BMS1',
'EIF5B',
'TMEM11',
'EEF1AKMT3',
'PEX3',
'HMGN4'): 'TPP2',
('MORF_ERCC2',
'http://www.gsea-msigdb.org/gsea/msigdb/human/geneset/MORF_ERCC2',
'SEC31A',
'BTD',
'GRIK5',
'EIF5B',
'TMEM11',
'BPHL'): 'SFSWAP'}})
mrna_kirp.iloc[0:4,0:4]
pd.DataFrame({'TCGA.2K.A9WE.01': {'A1BG': 391.94,
'A1CF': 8.0,
'A2BP1': 1.0,
'A2LD1': 159.46},
'TCGA.2Z.A9J1.01': {'A1BG': 68.91,
'A1CF': 75.0,
'A2BP1': 0.0,
'A2LD1': 247.06},
'TCGA.2Z.A9J3.01': {'A1BG': 71.9,
'A1CF': 28.0,
'A2BP1': 33.0,
'A2LD1': 516.7},
'TCGA.2Z.A9J5.01': {'A1BG': 325.6,
'A1CF': 47.0,
'A2BP1': 4.0,
'A2LD1': 151.49}})
所需输出:
pd.DataFrame({'TCGA.2K.A9WE.01': {'A1BG': 391.94,
'A1CF': 8.0,
'A2BP1': 1.0},
'TCGA.2Z.A9J1.01': {'A1BG': 68.91,
'A1CF': 75.0,
'A2BP1': 0.0},
'TCGA.2Z.A9J3.01': {'A1BG': 71.9,
'A1CF': 28.0,
'A2BP1': 33.0},
'TCGA.2Z.A9J5.01': {'A1BG': 325.6,
'A1CF': 47.0,
'A2BP1': 4.0}})
3条答案
按热度按时间ar7v8xwq1#
你可以重置索引,然后将dataframe转换为flatten numpy数组,最后检查索引是否在数组中:
输出:
性能:
使用
stack
的解决方案比使用.values.flatten()
慢。注意:但是,您可能需要修改
gmt_c4
Dataframe 的加载方式,而不是检查列名中的值。似乎列名是一个数据记录?如果使用CSV/Excel文件,请使用header=None
作为pd.read_csv
/pd.read_excel
的参数。ncgqoxb02#
对于
gmt_c4
的MultiIndex
、columns
和values
中的任何值的匹配,使用DataFrame.stack
与Series.reset_index
和numpy.unique
,并在boolean indexing
中进行过滤:详情:
与
Index.intersection
和DataFrame.loc
类似:为了提高性能,请使用用途:
另一个关于集合的想法:
对于数据的完整性性能(真实的上应该是不同的):
9vw9lbht3#
下面的代码应该可以工作-
我已经把代码分成了几个小部分,试图更好地理解我是如何开发的。
这一行帮助将元组数组转换为ndarray。访问多索引将返回一个元组数组。默认情况下,多索引是这样的-
我需要使用np.isin来检查从 * mrna_kirp * 中提取的索引是否作为元组中的值存在。isin不能在元组数组中做我们想要的事情,所以我们将其转换为正确的格式。
我们使用apply函数遍历 * mrna_kirp * Dataframe ,并使用 * row.name * 检索每个行的索引,并为此设置 * axis = 1 *。
最后,当 * mrna_kirp * 的行索引在 * gmt_c4 * 中找不到时,我们使用dropna删除None值。