我有包含 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
