在 python 中计算 std()

calculate std() in python

我有一个数据框如下

Res_id  Mean_per_year
a     10.4
a     12.4
b     4.4
b     4.5
c     17
d     9

我想在“mean_per_year”上使用熊猫计算 std() 相同 res_id 我做了一个汇总并得到了

Res_id  Mean_per_year_agg
a     10.4,12.4
b     4.4,4.5
c     17
d     9

但是当我在 mean_per_year_agg 上应用 std() 时它不起作用 我的代码:

data = (data.groupby(['res_id'])
.agg({'mean_per_year': lambda x: x.tolist()})
.rename({'res_id' : 'mean_per_year'},axis=1)
.reset_index())

data['std'] = data.groupby('res_id')['mean_per_year_agg'].std()

错误

/usr/local/lib/python3.6/dist-packages/pandas/core/internals/blocks.py in __init__(self, values, placement, ndim)
    129         if self._validate_ndim and self.ndim and len(self.mgr_locs) != len(self.values):
    130             raise ValueError(
--> 131                 f"Wrong number of items passed {len(self.values)}, "
    132                 f"placement implies {len(self.mgr_locs)}"
    133             )

ValueError: Wrong number of items passed 0, placement implies 1

感谢您的帮助

您只需要 data.groupby('res_id')["Mean_per_year"].std() 原始数据框(删除整个 aggregate 业务)。