Skip to main content
 首页 » 编程设计

python之计算组分离后的列平均值

2025年05月04日13unruledboy

我有包含 a 和 b 列的 DataFrame,其中 b 包含值 Y 或 N 对应于 True 和 False。

我想按 a 分组,然后,对于每个组,得到 b 的平均值(意思是,该组中 True 的数量被划分按该组中的行数)。

到目前为止我得到的是

data['b'] = data['b'].map({'Y': True, 'N': False}) 
data.groupby('a', as_index=False)['b'].mean() 

但我想这不是方向..


数据示例:

a   b 
1   Y 
1   Y 
1   N 
2   Y 
2   Y 
2   N 
2   N 

输出应该是

a   avg 
1   2/3 
2   1/2 

请您参考如下方法:

使用交叉表

pd.crosstab(df.a,df.b,normalize='index').Y 
Out[336]:  
a 
1    0.666667 
2    0.500000 
Name: Y, dtype: float64