【问题标题】:Calculate mean of column for each row excluding the row for which mean is calculated计算每行的列的平均值,不包括计算平均值的行
【发布时间】:2019-04-03 09:26:31
【问题描述】:

我需要计算 DataFrame 中某一列的平均值,以便计算每一行的平均值,不包括计算它的行​​的值。

我知道我可以按索引迭代每一行,在每次迭代中按索引删除每一行,然后计算平均值。我想知道是否有更有效的方法。

【问题讨论】:

标签: python pandas dataframe machine-learning data-science


【解决方案1】:

您可以dataframe["ColumnName"].mean() 用于单列,或dataframe.describe() 用于所有列

【讨论】:

    【解决方案2】:

    所以meansum/size,所以您可以按列减去所有值的sum,然后除以DataFrame 的长度,而没有1

    df = pd.DataFrame({'a':[1,2,3,4]})
    
    #slow, working only with unique values
    df['b'] = df['a'].apply(lambda x: df.loc[df.a != x, 'a'].mean())
    #faster
    df['b1'] = (df['a'].sum() - df['a']) / (len(df) - 1)
    print (df)
       a         b        b1
    0  1  3.000000  3.000000
    1  2  2.666667  2.666667
    2  3  2.333333  2.333333
    3  4  2.000000  2.000000
    

    【讨论】:

    • 是的,这就是我想要的!在第二个示例中,仅应用列操作。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2014-04-23
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多