获得分组数据框列的标准偏差

时间:2020-04-20 08:34:50

标签: python pandas numpy pandas-groupby

我正在尝试获取列值的(样本)标准偏差,并按我的数据框中的另一列进行分组。

具体来说,我有这样的东西:

  col1  col2                       
0  A     10 
1  A     5
2  A     5
3  B     2
4  B     20
2  B     40

我正试图到达这里:

  col1  col2 std                      
0  A     10  2.89
1  A     5   2.89
2  A     5   2.89
3  B     2   19.00
4  B     20  19.00
2  B     40  19.00

我尝试使用以下代码:

df['std']=df.groupby('col1')['col2'].std(skipna=True, ddof=1)

但是我收到以下错误:

UnsupportedFunctionCall: numpy operations are not valid with groupby. Use .groupby(...).std() instead

我在做什么错了?

谢谢!

1 个答案:

答案 0 :(得分:1)

GroupBy.transformlambda function一起使用:

df['std']=df.groupby('col1')['col2'].transform(lambda x: x.std(skipna=True, ddof=1))
print (df)
  col1  col2        std
0    A    10   2.886751
1    A     5   2.886751
2    A     5   2.886751
3    B     2  19.008770
4    B    20  19.008770
2    B    40  19.008770