代码之家  ›  专栏  ›  技术社区  ›  Rehan Azher

大熊猫平均数和性病返回数

  •  1
  • Rehan Azher  · 技术社区  · 7 年前

    遇到这个问题,我无法解决,我有一个大的数据框架(示例发布在下面),有5列。我想计算每行的标准差和平均值。不知怎么的,它一直在返回南。

       CellName                Apr-2018    Feb-2018    Jan-2018    Mar-2018  mean
    0  BDG652ML_KPBENDULML1    9.450841   24.119474   27.091426   17.527006   NaN
    1  BDG652ML_KPBENDULML2   15.917555   10.548731   11.019208   14.592388   NaN 
    2  BDG652ML_KPBENDULML3   24.957360   21.122519   21.197216   24.950549   NaN
    

    我已经检查了我所有的月份栏和 float64 df.types 给予:

    CellName     object
    Apr-2018    float64
    Feb-2018    float64
    Jan-2018    float64
    Mar-2018    float64
    dtype: object
    

    我知道我不需要排除单元格列,使用

    df['mean'] = df.mean(numeric_only =True)

    我也尝试过:

    df['mean'] = df.iloc[:,1:].mean(numeric_only =True)

    但仍然没有。性病也有同样的表现。

    关于我可能做错什么有什么提示吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   jezrael    7 年前

    使用参数 axis=1 对于 mean 每行, numeric_only 参数似乎应省略:

    df['mean'] = df.mean(axis=1)
    #df['mean'] = df.mean(numeric_only=True, axis=1)
    print (df)
    
                  CellName   Apr-2018   Feb-2018   Jan-2018   Mar-2018       mean
    0  BDG652ML_KPBENDULML1   9.450841  24.119474  27.091426  17.527006  19.547187
    1  BDG652ML_KPBENDULML2  15.917555  10.548731  11.019208  14.592388  13.019470
    2  BDG652ML_KPBENDULML3  24.957360  21.122519  21.197216  24.950549  23.056911
    

    df['std'] = df.std(axis=1)
    print (df)
    
                  CellName   Apr-2018   Feb-2018   Jan-2018   Mar-2018       std
    0  BDG652ML_KPBENDULML1   9.450841  24.119474  27.091426  17.527006  7.828126
    1  BDG652ML_KPBENDULML2  15.917555  10.548731  11.019208  14.592388  2.644401
    2  BDG652ML_KPBENDULML3  24.957360  21.122519  21.197216  24.950549  2.190731
    

    如果要添加两列 assign 是你的朋友,因为 意思是 std 仅需要原始数字列中的计数:

    df = df.assign(std=df.std(axis=1), mean=df.mean(axis=1))
    print (df)
    
                   CellName   Apr-2018   Feb-2018   Jan-2018   Mar-2018       std  \
    0  BDG652ML_KPBENDULML1   9.450841  24.119474  27.091426  17.527006  7.828126   
    1  BDG652ML_KPBENDULML2  15.917555  10.548731  11.019208  14.592388  2.644401   
    2  BDG652ML_KPBENDULML3  24.957360  21.122519  21.197216  24.950549  2.190731   
    
            mean  
    0  19.547187  
    1  13.019470  
    2  23.056911