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。很好的解释,现在一切都有意义了。