计算每行的标准偏差和列的平均值,不包括计算平均值的行

  • 本文关键字:平均值 计算 不包括 标准 python pandas
  • 更新时间 :
  • 英文 :


我需要计算DataFrame中某一列的平均值和标准差,以便计算每行的平均值与标准差,不包括计算行的值。

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

df=pd.DataFrame({'marks':[10,20,30,10]})

我有一个解决方案,它只在没有元素重复的情况下有效,但在我的数据中,我们有10个重复两次,所以我的方法不起作用。

方法:

data['marks'].apply(lambda x: data.loc[data.marks!= x, 'marks'].mean())
data['marks'].apply(lambda x: np.std(data.loc[data.marks!= x, 'marks']))

有人能帮我做这个吗?

平均值是所有值的总和除以元素数量,因此为了排除考虑自己行的值,我们可以尝试:

def mean_except_self(s):
'''
calculate mean of the series except the value of each row
'''
if len(s) <= 1: return np.nan
return (s.sum() - s) / (len(s) - 1)
data['new_average'] = mean_except_self(data['marks'])
data['new_std'] = mean_except_self(data['marks']**2) - data['new_average']**2

最新更新