我有一个Pandas DataFrame,如下所示:
a b c d
0 Apple 3 5 7
1 Banana 4 4 8
2 Cherry 7 1 3
3 Apple 3 4 7
我想按“ a”列对行进行分组,同时将“ c”列中的值替换为分组行中的平均值,并添加另一列,其中“
c”列中的值的std偏差已计算出平均值。对于分组的所有行,列“ b”或“ d”中的值是恒定的。因此,所需的输出将是:
a b c d e
0 Apple 3 4.5 7 0.707107
1 Banana 4 4 8 0
2 Cherry 7 1 3 0
实现此目标的最佳方法是什么?
您可以使用以下groupby-agg
操作:
In [38]: result = df.groupby(['a'], as_index=False).agg(
{'c':['mean','std'],'b':'first', 'd':'first'})
然后重命名各列并对其重新排序:
In [39]: result.columns = ['a','c','e','b','d']
In [40]: result.reindex(columns=sorted(result.columns))
Out[40]:
a b c d e
0 Apple 3 4.5 7 0.707107
1 Banana 4 4.0 8 NaN
2 Cherry 7 1.0 3 NaN
熊猫默认情况下会计算样本std。要计算总体标准:
def pop_std(x):
return x.std(ddof=0)
result = df.groupby(['a'], as_index=False).agg({'c':['mean',pop_std],'b':'first', 'd':'first'})
result.columns = ['a','c','e','b','d']
result.reindex(columns=sorted(result.columns))
产量
a b c d e
0 Apple 3 4.5 7 0.5
1 Banana 4 4.0 8 0.0
2 Cherry 7 1.0 3 0.0
我的数据与此类似: 我需要计算基于名称组的差异列的标准偏差。 我试过了 和 但两者都为传递给的变量提供了KeyError。我试图用以下方法解决它: 但错误仍然存在。 提前谢谢。
计算一组动态列的Mean和STD子集。 举个例子: 上述测试数据如下表所示。我需要的是根据“Nmon”列中的值对每一行应用函数。 例如,第一条记录的Nmon值为7。然后我需要计算从7月到1月所有值的均值和均方差(均值=0.71,std=0.49)。 在Nmon值为4的第二个记录的情况下,平均值和标准偏差应仅针对从10月到1月的月份进行计算(平均值= 4,标准差= 0) 这里的月数会增加或减少,但第
示例数据: 我想计算每个唯一列名称的平均值和标准偏差(忽略NA)以获得如下输出: 可再现数据: 我得到的最接近的是 这是我从这篇文章中得到的,但我不知道如何调整它来得到我想要的。我知道我可以取rowmeans的平均值来得到每组的平均值,但这不适用于标准差。
问题内容: 这是我的问题,我有一个像这样的数据框: 我只想计算整个数据帧的平均值,因为以下方法不起作用: 然后我想出了: 但是,此技巧不适用于计算标准偏差。我最后的尝试是: 除了在后一种情况下,它使用了numpy中的mean()和std()函数。这不是平均值的问题,而是std的问题,因为pandas函数默认使用,而不是numpy的where 。 问题答案: 您可以将数据框转换为单列(将形状从5x3
我有一个10data.frames的列表,我只需要为每个data.frame划分两列,然后计算相对均方差。 我想用lapplication。 下面是列表中包含的一个data.frame的示例: 我必须对我的所有10个数据帧执行以下操作:
问题内容: 有没有一种方法可以使用Boost计算包含样本的向量的均值和标准差? 还是我必须创建一个累加器并将向量馈入其中? 问题答案: 使用累加器 是 在Boost中计算均值和标准差的方法。