1

我有一个串联的单细胞 RNAseq anndata

obs: 'Age', 'EPNsubtype', 'Region', 'Subclass', 
'Taxonomy_group', 'Tissue', 'batch', 'pheno', 'sample', 
'subtype', 'treatment', 'n_genes', 'percent_mito', 
'n_counts', 'leiden'

我想'Sex'为不同的“样本”创建另一个 obs

我知道我可以用

adata.obs["sex"] = "female"

但是对于特定的样本类别而不是整个集合,我该如何做呢?

谢谢!

4

1 回答 1

2

所以 AnnData 的adata.obs(或adata.var)属性是pandas.DataFrame。所以你可以这样使用它们。

例如,假设adata.obs包含有关标记为 和 的单元格AACTAACG信息AACC。还可以想象数据框包含年龄和组织的信息。数据框将包含 3 个索引对应于单元格的标签和两列对应于AgeTissue

adata.obs
  Index   Age  Tissue
  AACT    26   Lung
  AACG    40   Lung
  AACC    34   Lung

现在,就像您说的那样,如果您键入adata.obs['sex'] = 'female',它将sex为数据帧的每个索引创建一个名为“female”的新列。

adata.obs
  Index   Age  Tissue  sex
  AACT    26   Lung    female
  AACG    40   Lung    female
  AACC    34   Lung    female

想象一下这个细胞实际上来自一个“男性”患者,你可以这样写AACCAACG

male_patients = ['AACC', 'AACG']
adata.obs.loc[male_patients, 'sex'] = 'male'

这将导致:

adata.obs
  Index   Age  Tissue  sex
  AACT    26   Lung    female
  AACG    40   Lung    male
  AACC    34   Lung    male

请注意,我已使用该.loc\[\]属性通过索引名称 ( ['AACC', 'AACG']) 和列名称 ( 'sex') 访问数据框的特定元素。

我建议您按照一些教程来学习如何使用 python pandas DataFrame(示例:(链接))。

于 2020-10-15T08:44:14.323 回答