首页 > 解决方案 > 基于索引和另外 2 列的列的平均值

问题描述

我有这个数据框:

d = {'day': [0,0,0,0,0,0, 1,1,1,1,1,1, 2,2,2,2,2,2], 'period': ['p1','p1','op1','op1','p2','p2','p1','p1','op1','op1','p2','p2','p1','p1','op1','op1','p2','p2'], 's1':[2,2,3,6,4,2,8,2,1,2,1,2,2,9,5,2,2,3]}  
df = pd.DataFrame(data=d)

在此处输入图像描述

我需要这个结果:

在此处输入图像描述

我试过这个:

df.groupby('period', as_index=False)['s1'].mean()

这是它的结果:

在此处输入图像描述

但这并没有解决我的问题..

标签: pythonpandasdataframepandas-groupby

解决方案


你可以试试这个:

df.groupby(['period',df.groupby(['day','period']).cumcount()]).mean()

输出:

          day        s1
period                 
op1    0  1.0  3.000000
       1  1.0  3.333333
p1     0  1.0  4.000000
       1  1.0  4.333333
p2     0  1.0  2.333333
       1  1.0  2.333333

推荐阅读