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