Pandas建立基于手段的子表

2024-10-02 02:33:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含数值和非数值数据列的数据帧。以下是其中的一部分:

ATG12 Norm     ATG5 Norm    ATG7 Norm    Cancer Stage    
5.55           4.99         8.99         IIA
4.87           5.77         8.88         IIA
5.98           7.88         8.34         IIC

我想按癌症分期对数据进行分组,取每个数值数据列的平均值并生成一个表,列出每个癌症阶段的平均值;如下所示:

^{pr2}$

我已经找到了groupby和mean()函数,可以使用以下方法计算一列的平均值:

AVG = data.groupby("Cancer Stage")['ATG12 Norm'].mean()

但这只会让我:

Cancer Stage    
IIA             5.03      
IIB             7.45
IIIA            5.32
Name: ATG12 Norm, dtype: float64

如何将此过程应用于我想要的所有列,并生成所有列的数据帧?抱歉,如果这是重复的话;我发现的熊猫问题似乎是关于相关的话题,我脑子里都是。在


Tags: 数据normmeanstage数值平均值癌症groupby
1条回答
网友
1楼 · 发布于 2024-10-02 02:33:20

你试过了吗

df.groupby('Cancer Stage').mean()

或者

^{pr2}$

带额外文本列的示例数据:

import pandas as pd
from StringIO import StringIO

data='''ATG12 Norm     ATG5 Norm    ATG7 Norm    Cancer Stage    Text
5.55           4.99         8.99         IIA    ABC
4.87           5.77         8.88         IIA    ABC
5.98           7.88         8.34         IIC    ABC'''

df = pd.DataFrame.from_csv(StringIO(data), index_col=None, sep='\s{2,}')

print df
print df.groupby('Cancer Stage')['ATG12 Norm','ATG5 Norm'].mean()
print df.groupby('Cancer Stage').mean()

结果:

   ATG12 Norm  ATG5 Norm  ATG7 Norm Cancer Stage Text
0        5.55       4.99       8.99          IIA  ABC
1        4.87       5.77       8.88          IIA  ABC
2        5.98       7.88       8.34          IIC  ABC


              ATG12 Norm  ATG5 Norm
Cancer Stage                       
IIA                 5.21       5.38
IIC                 5.98       7.88


              ATG12 Norm  ATG5 Norm  ATG7 Norm
Cancer Stage                                  
IIA                 5.21       5.38      8.935
IIC                 5.98       7.88      8.340

相关问题 更多 >

    热门问题