熊猫表示基于另一列的某些列(二进制值)

时间:2020-11-03 12:14:27

标签: python python-3.x pandas pandas-groupby pivot-table

假设我们有这样的东西:

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列的均值?

1 个答案:

答案 0 :(得分:2)

使用DataFrame.melt首先取消枢纽,聚合mean,最后添加Series.unstack

df1 = df.melt('p').groupby(['variable', 'value'])['p'].mean().unstack(fill_value=0)

或使用DataFrame.pivot_table

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