如何解决对Pandas DataFrame进行分组,计算一列的均值和标准差,并使用reset_index将std添加为新列
您可以使用以下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
解决方法
我有一个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
实现此目标的最佳方法是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。