Получить стандартное отклонение столбца сгруппированных данных - PullRequest
1 голос
/ 20 апреля 2020

Я пытаюсь получить (примерное) стандартное отклонение значений столбца, сгруппированных по другому столбцу в моем фрейме данных.

Если говорить конкретно, у меня есть что-то вроде этого:

  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 Ответ

1 голос
/ 20 апреля 2020

Использование 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
...