Python 组上的标准偏差返回空值

Python 组上的标准偏差返回空值,python,pandas,Python,Pandas,熊猫是这里的初学者。我想计算在同一日期出发的船舶的速度的标准偏差 我尝试了以下操作,它返回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.gr

熊猫是这里的初学者。我想计算在同一日期出发的船舶的
速度的标准偏差

我尝试了以下操作,它返回
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()

这是因为按
“左端口日期”
分组后的索引正是该列,然后当分配给具有不同索引的原始数据帧时,可以使用transform返回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
的序列,该序列与实际数据帧的索引不同。当涉及到系列分配时,熊猫分配是基于索引的

LEFT PORT DATE
20/10/2019         NaN
21/10/2019    9.950042
Name: SPEED, dtype: float64

谢谢你@ansev。很好的解释,现在一切都有意义了。