我正在尝试获取列值的(样本)标准偏差,并按我的数据框中的另一列进行分组。
具体来说,我有这样的东西:
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
我在做什么错了?
谢谢!
答案 0 :(得分:1)
将GroupBy.transform
与lambda 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