我有一个大的遗传数据矩阵,SNP的个体,值为0,1,2。个体和SNP都有一些相关的元数据。例如,
个人可能有性别,血统,年龄,医生等 SNP具有染色体,位置,突变类型等。
元数据不是分层的。我想把它组织成一个DataFrame所以我可以
熊猫可以吗?
组织数据的自然方式是什么?
答案 0 :(得分:0)
我不确定您的专业水平是基于这个问题,但我首先要查看大熊猫merge
上的docs。
听起来你有个人作为行和SNP作为列;我还假设您拥有由每个人的唯一标识符索引的两个数据帧。如果您的第二个数据框的临床数据具有相同的索引,您可以使用以下行合并它们:
import pandas as pd
pd.merge(snp_df, clinical_df, how='inner', left_index=True, right_index=True)
这只会给你完整的数据;如果您想要包含没有临床数据的个体,请将参数更改为how=left
,这将使每个人都拥有遗传数据。
要根据有关SNP的一些信息进行过滤,我可以这样做:
snp_info_dict = {...} # Some information you already have, indexed by SNP
def test_function(single_snp_info):
# Test something about the information, return True or False
good_snps = [snp for snp in snp_info_dict if test_function(snp_info_dict[snp])]
good_snps_df = df.loc[:, good_snps]
您也可以使用pandas数据帧上的操作来执行上述操作。