将GroupBy平均结果添加为pandas中的新列 [英] Add GroupBy mean result as a new column in pandas
本文介绍了将GroupBy平均结果添加为pandas中的新列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个数据框,它给出了每个指标的上限值和下限值
I have a dataframe that gives upper and lower values of each indicator as follows
df = pd.DataFrame(
{'indicator': ['indicator 1', 'indicator 1', 'indicator 2', 'indicator 2'],
'year':[2014,2014,2015,2015],
'value type': ['upper', 'lower', 'upper', 'lower'],
'value':[12.3, 10.2, 15.4, 13.2]
},
index=[1,2,3,4])
我想删除上限值和下限值,并用两个值的平均值代替.
I want to remove the upper and lower values and replace that with the mean of two values.
我该怎么做?
推荐答案
您可以通过mean
使用groupby
和transform
.
df['value'] = df.groupby('indicator')['value'].transform('mean')
df
indicator value value type year
1 indicator 1 11.25 upper 2014
2 indicator 1 11.25 lower 2014
3 indicator 2 14.30 upper 2015
4 indicator 2 14.30 lower 2015
或者,如果每个指标只需要一行,请使用agg
.
df = df.groupby('indicator').agg('mean')
df
value year
indicator
indicator 1 11.25 2014
indicator 2 14.30 2015
如果您希望将索引作为列,请调用reset_index
:
If you want the index as a column instead, call reset_index
:
df = df.reset_index()
df
indicator value year
0 indicator 1 11.25 2014
1 indicator 2 14.30 2015
这篇关于将GroupBy平均结果添加为pandas中的新列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文