假设我们有这样的东西:
df = pd.DataFrame([[0,1,0,13], [1,0,1,14], [1,1,0,12], [1,0,0,15]], columns = ["A", "B" , "C", "p"])
A,B,C具有二进制值,我想为每一列计算p的均值,但分别为每个组(1和0)计算
。我用一栏
df.groupby('A')['p'].mean()
但是如何一次计算ABC列的均值?
答案 0 :(得分:2)
使用DataFrame.melt
首先取消枢纽,聚合mean
,最后添加Series.unstack
:
df1 = df.melt('p').groupby(['variable', 'value'])['p'].mean().unstack(fill_value=0)
df1 = df.melt('p').pivot_table(index='variable', columns='value', values='p', fill_value=0)
print (df1)
value 0 1
variable
A 13.000000 13.666667
B 14.500000 12.500000
C 13.333333 14.000000