我有一个数据框
a = pd.DataFrame({'a':[1,2,3,4], 'b':[1,1,2,2], 'c':[1,1,1,2]})
>>> a
a b c
0 1 1 1
1 2 1 1
2 3 2 1
3 4 2 2
我想根据b和c的值计算一次分组的平均值。
所以我应该将数据分成3组:
b=1,c=1
b=1,c=2
b=2,c=2
然后计算每组中a的平均值。
我该怎么做? 我怀疑我必须使用groupby,但我不明白如何。
答案 0 :(得分:3)
您可以通过传递列名列表来对多个列进行分组,然后它只是在gorupby对象上调用mean
的简单情况:
In [4]:
a.groupby(['b','c']).mean()
Out[4]:
a
b c
1 1 1.5
2 1 3.0
2 4.0
如果要将按后面分组的列还原为列,只需调用reset_index()
:
In [5]:
a.groupby(['b','c']).mean().reset_index()
Out[5]:
b c a
0 1 1 1.5
1 2 1 3.0
2 2 2 4.0