首页 > 解决方案 > Groupby、means 和 std

问题描述

我是python的新手......提前谢谢你!

我需要分组,在列中计算每种营养素的平均值和相应的标准。因此:鳕鱼 | 平均值 | 国家标准 | 等等...对于每种营养素

我设法分组并计算平均值。但我需要另一列,例如,在 N% 旁边,它是 std ......等等......

report = my_data.groupby(["cod"], as_index = False)[['N%', 'P%','K%', 'Ca%', 'Mg%', 'S%',
                                                'Fe mg/kg', 'Mn mg/kg', 'Zn mg/kg', 'Cu mg/kg', 
                                                'B mg/kg', 'Na mg/kg']].mean()

标签: python-3.xpandasjupyter-notebook

解决方案


Write a dict comprehension with each of the column as key and ['mean', 'std'] as value first -

groups_agg = { i:['mean', 'std'] for i in ['N%', 'P%','K%', 'Ca%', 'Mg%', 'S%', 'Fe mg/kg', 'Mn mg/kg', 'Zn mg/kg', 'Cu mg/kg', 'B mg/kg', 'Na mg/kg'] }

It will look like this -

{'B mg/kg': ['mean', 'std'],
 'Ca%': ['mean', 'std'],
 'Cu mg/kg': ['mean', 'std'],
 'Fe mg/kg': ['mean', 'std'],
 'K%': ['mean', 'std'],
 'Mg%': ['mean', 'std'],
 'Mn mg/kg': ['mean', 'std'],
 'N%': ['mean', 'std'],
 'Na mg/kg': ['mean', 'std'],
 'P%': ['mean', 'std'],
 'S%': ['mean', 'std'],
 'Zn mg/kg': ['mean', 'std']}

Then pass on the object to pd.agg()

my_data.groupby(["cod"], as_index = False).agg(groups_agg)

推荐阅读