Стандартное отклонение по группе возвращает ноль - PullRequest
1 голос
/ 21 октября 2019

Панды начинающий здесь. Я хотел бы рассчитать стандартное отклонение SPEED для судов, которые отправляются в тот же день.

Я пробовал следующее, и он возвращает NaN - почему? Правильный ответ должен быть 9.9500418759588

import pandas as pd
df = pd.DataFrame({ 'LEFT PORT DATE':['21/10/2019','21/10/2019','21/10/2019','20/10/2019'], 'SPEED':[10, 20, 0.10, 50]})

df['RUN STD DEVIATION']  =  df.groupby('LEFT PORT DATE')['SPEED'].std()

1 Ответ

1 голос
/ 21 октября 2019

Это происходит потому, что индекс после группировки по 'LEFT PORT DATE' является именно этим столбцом, а затем при присваивании исходному кадру данных с другим индексом возвращает NaN, вы можете использовать преобразование

data['RUN STD DEVIATION']=data.groupby('LEFT PORT DATE')['SPEED'].transform('std')
print(data)
  LEFT PORT DATE  SPEED  RUN STD DEVIATION
0     21/10/2019   10.0           9.950042
1     21/10/2019   20.0           9.950042
2     21/10/2019    0.1           9.950042
3     20/10/2019   50.0                NaN

.

data.groupby('LEFT PORT DATE')['SPEED'].std() возвращает серию с индексом LEFT PORT DATE, который не совпадает с индексом фактического кадра данных. Назначение панд index based, когда дело доходит до назначения серии.

LEFT PORT DATE
20/10/2019         NaN
21/10/2019    9.950042
Name: SPEED, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...