如何使用panda对数据集中标题的某个部分进行分组



这里有一个数据集,我必须在其中对每个样本进行分组。每个样本的组是样本名称的一部分。我有每一行都有一个半唯一的标题。例如

TCGA.02.0047.GBM.C4, TCGA.02.0055.GBM.C4, TCGA.ZS.A9CG.LIHC.C3, TCGA.ZU.A8S4.CHOL.C1, TCGA.ZX.AA5X.CESC.C2.

我需要以标题中的C位为目标,并将该标题中的值分组,以便每个样本都在C1、C2、C3或C4中。

我该怎么做?

例如,您有这样的数据集:

import pandas as pd
df = pd.DataFrame({"Column_A": ["TCGA.02.0047.GBM.C4", "TCGA.02.0055.GBM.C4", "TCGA.ZS.A9CG.LIHC.C3", "TCGA.ZU.A8S4.CHOL.C1", "TCGA.ZX.AA5X.CESC.C2"]})

Column_A
0   TCGA.02.0047.GBM.C4
1   TCGA.02.0055.GBM.C4
2   TCGA.ZS.A9CG.LIHC.C3
3   TCGA.ZU.A8S4.CHOL.C1
4   TCGA.ZX.AA5X.CESC.C2

您可以使用以下组添加新列:

df["Group"] = df["Column_A"].str[-2:]

Column_A              Group
0   TCGA.02.0047.GBM.C4     C4
1   TCGA.02.0055.GBM.C4     C4
2   TCGA.ZS.A9CG.LIHC.C3    C3
3   TCGA.ZU.A8S4.CHOL.C1    C1
4   TCGA.ZX.AA5X.CESC.C2    C2

如果您有列名

您可以extract最后一个周期后的零件,并将其用作分组器:

df.groupby(df.columns.str.extract('([^.]+)$', expand=False), axis=1)

然后执行所需的聚合。

如果有一列

df['new'] = df['col'].str.extract('([^.]+)$')

输出:

col new
0   TCGA.02.0047.GBM.C4  C4
1   TCGA.02.0055.GBM.C4  C4
2  TCGA.ZS.A9CG.LIHC.C3  C3
3  TCGA.ZU.A8S4.CHOL.C1  C1
4  TCGA.ZX.AA5X.CESC.C2  C2

最新更新