分组的标准差返回空值

时间:2019-10-21 11:38:22

标签: python pandas

熊猫初学者在这里。我想为同一天出发的船舶计算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 个答案:

答案 0 :(得分:1)

之所以会发生这种情况,是因为按'LEFT PORT DATE'分组之后的索引正是此列,然后在分配给具有不同索引的原始数据帧时返回NaN,则可以使用transform

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