【发布时间】:2022-01-12 21:08:57
【问题描述】:
我有一个 pandas 数据框,我将其融合在一起,每一行都是不同的单细胞基因表达。我想按元数据列(“患者 ID”、“集群 ID”、“基因 ID”)进行排序,并计算“值”列中有多少单元格的值大于零。
接下来,我想将其除以该“患者 ID”中该“集群 ID”中的单元格的总值。我不是 100% 确定如何做到这一点。我尝试了类似的东西
df = df.groupby(['patient ID', 'Cluster ID', 'Gene ID']).size().reset_index(name='counts')
获得df,其中包含患者表达基因的簇内细胞总数。我仍然需要一种方法来按“值”列高于零的值对它们进行排序,然后除以得到我的最终值。
当我尝试类似的事情时
df["Counts > 0"]= df.groupby(['patient ID', 'Cluster ID', 'Gene ID'])['value'].gt(0).sum()
我收到一条错误消息:
AttributeError: 'SeriesGroupBy' object has no attribute 'gt'
编辑:示例
data = {'Patient ID':['C100', 'C100', 'C100', 'C101', 'C102', 'C103'],
'Cluster ID':['ID 1', 'ID 2', 'ID 2', 'ID 2', 'ID 3', 'ID4'],
'Gene ID':['Gene 1', 'Gene 1', 'Gene 2', 'Gene 2', 'Gene 3', 'Gene 4'],
'Expression Value':[0, 0, 5, 0, 20, 5],
}
# Create DataFrame
df = pd.DataFrame(data)
# Print the output.
df
EXAMPLE but it gets much bigger and complicated
对于患者 ID、集群 ID、基因 ID 的每个组合,我如何计算它们的总和?它们的总和大于“值”中的零?将它们两者相除,找出患者体内某个簇中某个基因 ID 呈阳性的细胞的百分比。
【问题讨论】:
-
你能举一个df输入的例子吗?
-
@DaSong 我刚刚用一个例子编辑和更新了帖子!
标签: pandas dataframe sorting counting